2012-02-13 63 views
1

當我試圖執行下面的查詢類型的SQL語句不能determinated

<!-- language: sql --> 

    CREATE TABLE STUDENT (
    ID INTEGER NOT NULL PRIMARY KEY, 
    NAME VARCHAR(255) NOT NULL 
    ); 

    CREATE GENERATOR GEN_STUDENT_ID; 

    SET TERM^; 
    CREATE OR ALTER TRIGGER STUDENT_BI FOR STUDENT 
    ACTIVE BEFORE INSERT POSITION 0 
    AS 
    BEGIN 
     IF (NEW.ID IS NULL) THEN 
     NEW.ID = GEN_ID(GEN_STUDENT_ID,1); 
    END^ 

    SET TERM ;^

我得到的錯誤「之類的SQL語句不能determinated」

此腳本由C#代碼運行

FbConnectionStringBuilder csb = new FbConnectionStringBuilder(); 
csb.ServerType = FbServerType.Embedded; 
csb.Database = "mydb.fdb"; 
csb.UserID = "SYSDBA"; 
csb.Password = "masterkey"; 

string conString = csb.ToString(); 
FbConnection.CreateDatabase(conString); 

FbScript script = new FbScript("DB_GEN.sql"); 
script.Parse(); 

using (FbConnection conn = new FbConnection(conString)) 
{ 
    conn.Open(); 
    Console.WriteLine("Connection opened"); 

    FbBatchExecution fbe = new FbBatchExecution(conn); 

    foreach (string cmd in script.Results) { 
     fbe.SqlStatements.Add(cmd); 
    } 

    try { 
     fbe.Execute(); 
    }catch(Exception e) 
    { 
     Console.WriteLine(e.Message); 
    } 

    conn.Close(); 

    Console.WriteLine("Connection closed"); 

    Console.WriteLine("Press any key to continue . . . "); 
    Console.ReadKey(true); 
} 

我使用火鳥嵌入式V2.5.1和FirebirdSql.Data.FirebirdClient v2.7.0.0

+1

在c#中運行腳本時出現錯誤嗎? – Reniuz 2012-02-13 11:56:46

+0

確定?我會嘗試一個不同的SQL客戶端。 – Task 2012-02-13 16:45:02

回答

3

從其他網站獲得答案。它似乎有需要替換該行

FbScript script = new FbScript("DB_GEN.sql"); 

StreamReader sr = File.OpenText(@"C:\TEMP\DB_GEN.sql"); 
FbScript script = new FbScript(sr.ReadToEnd()); 

腳本正常運行!