2
我想通过java执行一个字符串对一个mssql数据库,它工作正常,如果sql-code是正确的,或者如果我不使用EXECUTE。 但是,如果EXECUTE字符串中的sql代码错误,它不会显示任何错误。MSSQL执行不会在java中抛出错误
虽然这两个实施例以MSSQL管理工作室工作正常(两者都示出了预期的错误)
一个简单的例子是:
WORKING(示出了错误):
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
你可能需要证明过于执行该语句的Java代码。你还用什么驱动程序? –