1

注意:这不是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 可以吗?那会有什么副作用?或者,如果我确实处理命令,我如何实现“编译一次执行多次”流程。

4

0 回答 0