注意:这不是What does SqlCommand.Prepare() do and when should it be used?或SQLite/C# Connection Pooling and Prepared Statement Confusion或其他堆栈溢出问题的重复。我不是问准备好的陈述是否适合我的用例。我问如何与IDisposable一起使用它们。 结束注释
我有一个使用大约100个SQL语句的c#程序。我每次需要时都在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是否可以?会有什么副作用?或者,如果我处理该命令,我该如何实现“一次执行多次编译”流程。