我在 Windows UWP 應用程式中使用 SQlite 有一個奇怪的現象。
我正在嘗試對事務進行批量插入,但我只在資料庫中插入一行,或者出現一條錯誤訊息,指出“必須為以下引數添加值:”但錯誤訊息和我的所有引數中均未顯示任何引數包含有效值。
這是代碼
{
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, _dbName);
using (SqliteConnection db = new SqliteConnection($"Filename={dbpath}"))
{
db.Open();
using (var insertCommand = db.CreateCommand())
{
using (var insertTransaction = db.BeginTransaction())
{
insertCommand.Transaction = insertTransaction
insertCommand.CommandText = $"INSERT INTO {tableName} (Id) VALUES (@Id)";
foreach (var aktor in aktors)
{
insertCommand.Parameters.AddWithValue("@id", aktor.Id);
await insertCommand.ExecuteNonQueryAsync();
}
insertTransaction.Commit();
}
}
db.Close();
}
return true;
}
uj5u.com熱心網友回復:
每次向現有引數添加新引數時,您的代碼中都有一個錯誤。嘗試這個
insertCommand.Parameters.AddWithValue("@id", 0);
foreach (var aktor in aktors)
{
insertCommand.Parameters[0].Value = aktor.Id;
// or
insertCommand.Parameters["@id"].Value = actor.Id;
await insertCommand.ExecuteNonQueryAsync();
}
uj5u.com熱心網友回復:
對回圈中的每一項執行 INSERT 命令,然后提交:
{
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, _dbName);
using (SqliteConnection db = new SqliteConnection($"Filename={dbpath}"))
{
db.Open();
using (var insertTransaction = db.BeginTransaction())
{
foreach (var aktor in aktors)
{
using (var insertCommand = db.CreateCommand())
{
insertCommand.Transaction = insertTransaction;
insertCommand.CommandText = $"INSERT INTO {tableName} (Id) VALUES (@Id)";
insertCommand.Parameters.AddWithValue("@id", aktor.Id);
await insertCommand.ExecuteNonQueryAsync();
}
}
insertTransaction.Commit();
}
db.Close();
}
return true;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336549.html
上一篇:D3.js各種鏈接距離
