Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java应用程序外部调用SQL NOCOUNT_Java_Sql Server_Tsql_Nocount - Fatal编程技术网

如何从Java应用程序外部调用SQL NOCOUNT

如何从Java应用程序外部调用SQL NOCOUNT,java,sql-server,tsql,nocount,Java,Sql Server,Tsql,Nocount,在安装之前,我们的应用程序会检查SQL,以确保它具有正确的权限和各种设置。这些设置之一是@@OPTION NOCOUNT 我似乎一辈子都不知道如何从db中提取这个值 我试过这个。无论NOCOUNT是打开还是关闭,始终返回1 DECLARE @NOCOUNT INT = 1; IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 10; SELECT @NOCOUNT AS NOCOUNT; 我曾尝试在Java中使用

在安装之前,我们的应用程序会检查SQL,以确保它具有正确的权限和各种设置。这些设置之一是
@@OPTION NOCOUNT

我似乎一辈子都不知道如何从db中提取这个值

我试过这个。无论
NOCOUNT
是打开还是关闭,始终返回1

  DECLARE @NOCOUNT INT = 1; IF ( (512 & @@OPTIONS) = 512 ) SET   @NOCOUNT = 10;          
   SELECT @NOCOUNT AS NOCOUNT;
我曾尝试在Java中使用单独的SQL语句创建临时表,并尝试从中提取值,但没有成功。表创建得很好,但在本例中总是插入的值为零

CREATE TABLE TempNoCount(tNoCount int);
DECLARE @NOCOUNT int = 0; 
IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 1;
INSERT INTO #TempNoCount (tNoCount) VALUES (@NOCOUNT);
不管我做什么,我似乎无法从数据库中提取正确的值

即使在Java中运行此查询也返回零

 DECLARE @NOCOUNT INT = 0
 IF @@OPTIONS & 512 > 0 SET @NOCOUNT = 2
 SELECT @NOCOUNT AS NC
我也尝试过通过java进行简单查询:

 SELECT CONVERT(INT,@@OPTIONS & 512) as NOCOUNT; 
无论是开还是关,仍然始终返回零

我花了几天的时间试图弄清楚如何使用java应用程序检查
NOCOUNT
是开还是关,但我已经没有主意了

奇怪的是,当我使用sqlmgmtstudio时,一切都很好。创建插入等一切工作。当我使用java程序时,它不会

这就是java的局限性吗?MS不允许您使用外部程序拉取
@@OPTIONS

我甚至尝试了一个存储过程。当我调用存储的进程时,它仍然返回零,即使当
NOCOUNT
被打开时,结果应该是512


有什么建议吗?在这一点上,我非常乐意尝试任何东西。

您可以轻松验证这一点,只需切换设置的NOCOUNT值,然后运行:

SET NOCOUNT OFF
DECLARE @NOCOUNT INT = 1;
IF ( (512 & @@OPTIONS) = 512 ) SET @NOCOUNT = 10;          
SELECT @NOCOUNT AS NOCOUNT;

您是否可以共享有关使用哪个库连接到SQL Server的更多信息?另外,在您的第一个TSQL示例中,您是如何设置NOCOUNT on/off的?你有没有明确地把它放进去?ie在顶部添加
设置NOCOUNT ON
。我还打开了SQLMgmt studio。我在那里打开和关闭它,我只是在使用java.sqllibarays。导入java.sql.CallableStatement;导入java.sql.Connection;导入java.sql.DriverManager;导入java.sql.PreparedStatement;导入java.sql.ResultSet;导入java.sql.SQLException;导入java.sql.Statement;这是一个客户端设置,您正在为该特定连接打开/关闭它。如果要为给定连接打开/关闭它,请显式设置它,然后执行检查。SSMS使用SQL Server的
.Net提供程序
(也称为SqlClient)进行数据访问。SQLCMD的当前版本使用ODBC.Humm。。。我不认为简单地检查NoCount是开还是关会这么难。让我试试这些建议。这一定与mgmtstudio和命令有关。所以我做了个测试。创建表,创建一个将NoCount值插入表的存储过程。java程序执行存储的进程,然后我进行了选择。当java程序执行存储过程时,它总是插入一个值零,如果我从SQLMgmt studio执行存储过程,它添加的值是正确的。。。