我的代码出了什么问题?更新不会保存到数据库中。
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();
答案 0 :(得分:2)
这是一个常见的错误。 (可能两个微软都不能免于命名问题的误解)
您需要删除此行
ds.AcceptChanges();
对AcceptChanges的调用将DataSet表中的每一行设置为Unchanged,然后Update方法找不到要更新的内容。
请注意,Application.StartupPath
的一部分在调试时指向BIN \ DEBUG文件夹(或x86变体),因此您可能正在使用不同的数据库文件写入你在看(项目文件夹中的那个?)。