Я пытаюсь ВЫПОЛНИТЬ String для базы данных mssql через java, она отлично работает, если SQL-код правильный или если я не использую EXECUTE. Но если код sql в строке EXECUTE неверен, он не показывает никаких ошибок.Выполнение MSSQL не вызывает ошибку в java
Хотя оба примера работают хорошо в студии управления 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
Любые идеи, как это исправить?
Edit 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 Driver 2.0.1803.100/4.0.2206.100
Вы, вероятно, нужно, чтобы показать код Java, который выполняет оператор тоже. И какой драйвер вы используете? –