我试图使用execute块将多行插入到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网站这里上复制这个例子。
我正在使用firebird版本2.5.2和Firebird ADO.NET数据提供程序4.1.5.0
发布于 2014-05-24 05:44:18
您不需要(实际上不应该,因为它是客户端命令,Firebird不理解它)必须使用set term,因为FbCommand和Firebird本身(在协议中)只能在“批处理”中执行一个查询。
所以只创建你的execute block语句,你就没事了。
发布于 2015-04-26 05:51:49
你不必使用固定的术语^;
只需用^结束代码
如果必须将项设置为^,则将其与set项一起放回;^
https://stackoverflow.com/questions/23837893
复制相似问题