我试图通过使用执行块将多行插入到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
答案 0 :(得分:2)
你不是(事实上你不应该,因为它是客户端命令,Firebird不理解它)必须使用set term
因为{{1和Firebird本身(在协议中)只能在"批处理"中执行一个查询。
所以创建只是你的FbCommand
声明,你就可以了。
答案 1 :(得分:0)
你不必使用set term ^;
用^
结束你的代码如果您必须将术语设置为^,请将其设置为设置术语; ^