gpt4 book ai didi

c# - firebird 使用 .net 提供程序嵌入多个插入

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:42 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序将根据用户的熟练程度使用嵌入式 firebird 和/或 postgres。 firebird embedded 的论点是安装、防火墙、UAC 等问题应该更少。到目前为止,postgres 就像在云端行走,但我遇到了 Firebird 的障碍。该应用程序是 .net,我正在使用此提供商 http://www.firebirdsql.org/en/net-provider/版本 3.0.2

技术上一切正常,但嵌入 firebird 时我每秒仅插入大约 100 条记录,而使用 postgres 时每秒超过 3000 条记录!使用 postgres,我将大量 INSERT INTO... 语句作为一个命令启动,这很好。对于 Firebird 来说,进展并不顺利。这是有效的(缓慢地)

String query = @"INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
";
FbScript fbs = new FbScript(query);
fbs.Parse();
FbConnection fbc = new FbConnection(ConnectionString);

FbBatchExecution fbe = new FbBatchExecution(fbc, fbs);
fbe.Execute(true);

但是,我试图在没有解析的情况下进行。类似于这里的第二个答案 Run multiple insert queries against firebird database using isql或这里 http://www.firebirdfaq.org/faq336/

String sql = @"set term ^ ;
EXECUTE BLOCK AS BEGIN
INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
end^";

FbCommand cmd = new FbCommand();
PrepareCommand(cmd, connection, (FbTransaction)null, CommandType.Text, sql, commandParameters, out mustCloseConnection);
cmd.ExecuteNonQuery();

有了这个我得到了异常(exception)

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

第一种方式是唯一的方式吗?太慢了:(

最佳答案

您不需要set term 语句,这些是isql specific thing .所以试试

String sql = @"EXECUTE BLOCK AS BEGIN
INSERT INTO Customers(ID, Name, SiteID) VALUES(1,'delta',2);
INSERT INTO Customers(ID, Name, SiteID) VALUES(2,'phoenix',2);
END";

关于c# - firebird 使用 .net 提供程序嵌入多个插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17882366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com