注意:这不是SqlCommand.Prepare() 做什么以及何时应该使用它的副本?或SQLite/C# Connection Pooling 和 Prepared Statement Confusion或其他堆栈溢出问题。我不是在问准备好的语句是否适合我的用例。我在问如何将它们与 IDisposable 一起使用。尾注
我有一个使用大约 100 个 SQL 语句的 ac# 程序。using
每次我需要它时,我都会在一个块内创建一个 SQLiteCommand :
string query = @"select ... ";
using (SQLiteCommand cmd = new SQLiteCommand(query, conn))
{
cmd.Parameters.Add(new SQLiteParameter( ... ));
using (SQLiteDataReader dr = cmd.ExecuteReader())
{
while (dr.Read()) {
...
}
}
}
我想通过使用准备好的语句来提高性能,以便每个语句编译一次并在程序的整个生命周期内重复使用。
我的困境是 DbCommand 实现了 I Disposable,并且我看到的每个示例都显示了在执行 SQL 语句后立即释放的命令。
执行 SQL 语句后不处理 DbCommand 可以吗?那会有什么副作用?或者,如果我确实处理命令,我如何实现“编译一次执行多次”流程。