Firebird执行声明

时间:2014-05-23 20:30:03

标签: c# sql .net firebird

我试图通过使用执行块将多行插入到firebird表中。但我得到一个错误,说“术语”无效。

"Dynamic SQL Error nSQL error code = -104 Token unknown - line 1, column 5 term"

这是我用于插入

的C#代码
connection.Open();
string insertData = "set term ^ ; execute block as begin;";

foreach (dataPoint dataPointInsert in dataPointList)
{                      
    insertData += string.Format(" insert into data (trip_id, trip_type, longitude, latitude, speed, date_time, heading, valid) values ('{0}','{1}','{2}','{3}',{4},'{5}','{6}',{7});",
                                  dataPointInsert.GUID, dataPointInsert.tripType, dataPointInsert.longitude, dataPointInsert.latitude, dataPointInsert.speed, dataPointInsert.dateTime, dataPointInsert.heading, Convert.ToInt32(dataPointInsert.valid));
}

insertData += " end^";

var createCommand = new FbCommand(insertData, connection);
createCommand.ExecuteNonQuery();

我试图在firebird网站here上复制该示例。

我正在使用firebird版本2.5.2和Firebird ADO.NET数据提供程序4.1.5.0

2 个答案:

答案 0 :(得分:2)

你不是(事实上你不应该,因为它是客户端命令,Firebird不理解它)必须使用set term因为{{1和Firebird本身(在协议中)只能在"批处理"中执行一个查询。

所以创建只是你的FbCommand声明,你就可以了。

答案 1 :(得分:0)

你不必使用set term ^;

用^

结束你的代码

如果您必须将术语设置为^,请将其设置为设置术语; ^