当我尝试执行以下查询时
<!-- 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语句的类型”
此脚本由c#code
运行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);
}
我正在使用Firebird Embedded v2.5.1和FirebirdSql.Data.FirebirdClient v2.7.0.0
答案 0 :(得分:3)
从其他网站获得答案。看来需要更换这一行
FbScript script = new FbScript("DB_GEN.sql");
由此
StreamReader sr = File.OpenText(@"C:\TEMP\DB_GEN.sql");
FbScript script = new FbScript(sr.ReadToEnd());
脚本运行正常!