C#使用SqliteCommand

时间:2016-07-01 12:19:21

标签: c# sqlite

是否有一些手册描述了SqliteCommand的使用频率。什么是需要避免的情况?

包含许多功能的代码有什么危险?

private void UpgradeDataBaseEmptyColumn()
{
    var connection = GetConnection();
    {
        AddColumnIsEmpty(connection);
        Thread t = new Thread(() =>
            {
                ProcessIsEmptyColumn(connection);
            });
        t.IsBackground = true;
        t.Start();
    }
}

功能AddColumnIsEmpty

private void AddColumnIsEmpty(SQLiteConnection connection)
{
    using (SQLiteCommand command = new SQLiteCommand(connection))
    {
        //SOmething done
    }
}

功能ProcessIsEmptyColumn

public void ProcessIsEmptyColumn(SQLiteConnection connection)
{
    using (SQLiteCommand command = new SQLiteCommand(connection))
    {
        foreach (var item in getEmptyItemsNotUpdated(connection))
        {
            using (SQLiteTransaction transaction = connection.BeginTransaction())
            {
                //Something doe
                transaction.Commit();
            }
        }
    }

功能getEmptyItemsNotUpdated

private List<int> getEmptyItemsNotUpdated(SQLiteConnection connection)
{
    using (SQLiteCommand command = new SQLiteCommand(connection))
    {
        //return idToUpdate;
    }
}

2 个答案:

答案 0 :(得分:2)

  

请注意,SQLiteConnection实例不保证是线程   的安全即可。你应该避免在几个中使用相同的SQLiteConnection   线程同时。建议打开新连接   每个线程并在工作完成时关闭它。其实,   每次使用时都不会创建/处理连接   池= TRUE;连接字符串选项 - 连接将存储在   连接池。这极大地提升了性能。

https://www.devart.com/dotconnect/sqlite/docs/Devart.Data.SQLite~Devart.Data.SQLite.SQLiteConnection.html

答案 1 :(得分:0)

是的,你可以重复使用命令,但这样做通常很尴尬,因为你需要清除参数,更改命令文本等等。到你的时候完成所有这些,通常更容易从一个干净的对象开始。而且由于大多数方法只应该做一件事,因此您很难找到需要多个方案的方案。

重新使用的主要时间命令是当你想连续多次发出相同的命令时,可能只是在调用之间改变参数值。根据ADO.NET提供程序的不同,重用命令可能会产生很大的不同(提高性能),或者它可能几乎没有差别。