我有这样的脚本:
USE master;
GO
--Delete the TestData database if it exists.
IF EXISTS(SELECT * from sys.databases WHERE name='TestData')
BEGIN
DROP DATABASE TestData;
END
--Create a new database called TestData.
CREATE DATABASE TestData;
使用此代码:
BufferedReader in = new BufferedReader(new FileReader("resources/test.sql"));
String str;
StringBuffer sb = new StringBuffer();
while ((str = in.readLine()) != null) {
sb.append(str + "\n ");
}
in.close();
statement.executeUpdate(sb.toString());
我收到错误:GO附近的语法不正确。
答案 0 :(得分:1)
这是错误的,您不应该像这样执行SQL脚本。而是将整个SQL脚本包装在stored procedure
中,并从应用程序代码中调用该过程。
CREATE PROCEDURE usp_DBAction
AS
BEGIN
--Delete the TestData database if it exists.
IF EXISTS(SELECT * from master.sys.databases WHERE name='TestData')
BEGIN
DROP DATABASE TestData;
END
--Create a new database called TestData.
CREATE DATABASE TestData;
END
答案 1 :(得分:0)
GO不是Transact-SQL语句,您将GO传递给SQL-Server来执行它。 https://msdn.microsoft.com/en-us/library/ms188037(v=sql.110).aspx
基于ODBC或OLE DB API的应用程序在尝试执行GO命令时会收到语法错误。 SQL Server实用程序从不向服务器发送GO命令。