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代碼。你還用什麼驅動程序? –