繁体   English   中英

如何使用java程序运行ms sql脚本

[英]how to run ms sql script using java program

我有这样的脚本:

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 附近的语法不正确。

这是错误的,您不应该以这种方式执行 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

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 命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM