更改行后SQLite数据库不会更新

时间:2014-11-14 09:25:41

标签: c# sqlite datatable

我的代码出了什么问题?更新不会保存到数据库中。

SQLiteConnection connection = new SQLiteConnection(string.Format(@"Data Source={0}\statistik.s3db",Application.StartupPath));
connection.Open();
SQLiteDataAdapter db = new SQLiteDataAdapter("SELECT * FROM log WHERE Typ=1", connection);
DataSet ds = new DataSet();
db.Fill(ds);
SQLiteCommandBuilder builder = new SQLiteCommandBuilder(db);

foreach (DataRow row in ds.Tables[0].Rows)
{
      row["Message"] = "myupdatedmessage"; // IS NOT SAVED!
}
ds.AcceptChanges();
db.UpdateCommand = builder.GetUpdateCommand();
db.Update(ds.Tables[0]);
connection.Close();

1 个答案:

答案 0 :(得分:2)

这是一个常见的错误。 (可能两个微软都不能免于命名问题的误解)

您需要删除此行

ds.AcceptChanges();

AcceptChanges的调用将DataSet表中的每一行设置为Unchanged,然后Update方法找不到要更新的内容。

请注意,Application.StartupPath的一部分在调试时指向BIN \ DEBUG文件夹(或x86变体),因此您可能正在使用不同的数据库文件写入你在看(项目文件夹中的那个?)。