如何在sqlite的键值表中多行插入?

时间:2019-02-15 17:09:13

标签: c# sqlite

我在应用程序中编写了一个函数,用于在表的sqlite中向上插入多行。

该表的创建方式为:

CREATE TABLE KeyValueTable ( ObjectName TEXT PRIMARY KEY NOT NULL, ObjectValue BLOB)

函数是:

private bool Set(IEnumerable<(string key, object value, Type type)> collection)
{
    try
    {
        using (var connection = CreateConnection())
        {
            connection.Open();
            using (var transaction = connection.BeginTransaction())
            {
                foreach (var item in collection)
                {
                    var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(item.value, item.type, null);
                    using (var command = connection.CreateCommand())
                    {
                        command.CommandText = @"INSERT OR REPLACE INTO KeyValueTable VALUES (@ObjectName, @ObjectValue)";
                        command.Parameters.Add(new SQLiteParameter("@ObjectName", item.key));
                        command.Parameters.Add(new SQLiteParameter("@ObjectValue", serialized));

                        try
                        {
                            command.ExecuteNonQuery();
                        }
                        catch (InvalidOperationException)
                        {
                            transaction.Rollback();
                            return false;
                        }

                    } // using
                } // foreach

                transaction.Commit();
                return true;
            } // using
        }
    }
    catch (SQLiteException)
    {
        return false;
    }
}

不确定这是否是最好的方法,因为我正在为集合中的每个项目创建命令。

是否有更好的更有效的方法来做到这一点?

0 个答案:

没有答案