我希望跨线程共享SQLite连接。
如果我在SQLite shell中键入以下内容:
源码>开始;插入Person值('Tweety','Bird',80); select last_insert_rowid();提交;
shell打印新的rowid。
在使用Microsoft.Data.SQLite
的dotnet核心控制台应用程序中 SqliteCommand command = new SqliteCommand("begin; insert into Person values('Tweety','Bird',81); select last_insert_rowid(); commit;", connection);
Console.WriteLine(command.ExecuteScalar());
我希望控制台会打印新的rowid,但ExecuteScalar()会返回null。我已确认插入了新行。
答案 0 :(得分:0)
我将引用Vitaliy Fedorchenko的评论:
通常的做法是为每个线程使用单独的DB连接;由于连接池,使用效率仍然很好。在一个连接会话期间 (在打开和关闭之间)“last_insert_rowid()”返回在此会话中执行的最后一次插入的id。