2016-09-18 26 views
-1

运行MS SQL脚本我有这样的脚本:如何使用Java程序

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

回答

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 
+0

我有尝试,但我的SQL脚本是如此之大,所以我认为这不是好方法来调用存储过程。并且在删除语法GO时运行该脚本。 – code

+0

@Yuvi,你做错了。这完全不被推荐。尽管可以使用3部分命名来引用系统视图。 – Rahul