[英]MSSQL execute doesn't throw an error in java
我正在尝试通过java对mssql数据库执行字符串,如果sql代码正确或如果我不使用EXECUTE,它就可以正常工作。 但是,如果EXECUTE字符串中的sql代码错误,则不会显示任何错误。
尽管两个示例在mssql管理工作室中都可以正常工作(都显示了预期的错误)
一个简单的例子是:
工作中(显示错误):
declare @testvar varchar(255);
BEGIN
create table dbo.test1 (testid numeric(10,2));
ALTER TABLE dbo.test1 ALTER COLUMN testid numeric(15,299);
END
不工作(不显示任何错误):
declare @testvar varchar(255);
BEGIN
create table dbo.test1 (testid numeric(10,2));
SELECT @testvar = 'ALTER TABLE dbo.test1 ALTER COLUMN testid numeric(15,299);'
EXECUTE (@testvar);
END
任何想法如何解决?
编辑1 :(简单的Java代码示例,但足以显示此行为)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class QuickSqlExecuteExample {
public static Connection getConnection(String dbcon) throws SQLException {
Connection conn = null;
conn = DriverManager.getConnection(dbcon);
conn.setAutoCommit(true);
return conn;
}
public static void main(String[] args) throws SQLException {
String dbcon="jdbc:sqlserver://[HOST]:[PORT];databaseName=[DBNAME];user=[USER];password=[PASS];";
Connection con = getConnection(dbcon);
String qryString =
"declare @testvar varchar(255);"
+"\nBEGIN"
+"\n create table dbo.test1 (testid numeric(10,2));"
+"\n ALTER TABLE dbo.test1 ALTER COLUMN testid numeric(15,299)"
//+"\n SELECT @testvar = 'ALTER TABLE dbo.test1 ALTER COLUMN testid numeric(15,299);';"
//+"\n EXECUTE (@testvar);"
+"\nEND";
Statement select = con.createStatement();
select.execute(qryString);
}
}
尝试过的驱动程序:Microsoft SQL Server JDBC驱动程序2.0.1803.100 / 4.0.2206.100
如果我正确地阅读了此内容,那么您将忽略返回值。 该代码不知道它是否成功执行。 您的“有效”示例仅引发原始错误,但在“无效”结果中将忽略该错误。 尝试
DECLARE @retstat int;
EXECUTE @retstat = ALTER TABLE dbo.test1 ALTER COLUMN testid numeric(15,299);
参考: http : //technet.microsoft.com/zh-cn/library/ms188332.aspx (请参阅D和E节)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.