c#-使用SqliteDataAdapter将更改写入SQLite数据库

以下代码缺少什么?在此代码片段中,我正在从SQLite数据库中读取表.然后,我要更新单元格,然后读回更改.

此代码是较大代码的简化版本,但可以说明问题.

代码可以完美读取表,但是AcceptChanges()不会回写任何内容.我通过重复阅读并转到SQLiteAdmin并仔细阅读了表来验证这一点.

我尝试添加“ oLocalAdapter.Update(oLocalSet.Tables [0]);”行,但是没有任何区别.我看到它正在搜索.

using System.Data.SQLite;

// DATABASE (Local): Formulate the SQL command.
String strSqlCommand = "SELECT * FROM [tblTest] ORDER BY [IdPrimary] ASC;";
SQLiteCommand oLocalCommand = new SQLiteCommand(strSqlCommand, ClassEngine.Connection);

// DATABASE (Local): Get the data records.
SQLiteDataAdapter oLocalAdapter = new SQLiteDataAdapter(oLocalCommand);
DataSet oLocalSet = new DataSet();
oLocalAdapter.Fill(oLocalSet, "tblTest");

// Try to write to some changes.
String strValue = oLocalSet.Tables[0].Rows[0][8].ToString();
oLocalSet.Tables[0].Rows[0][8] = 9;
oLocalSet.Tables[0].AcceptChanges();
oLocalAdapter.Update(oLocalSet.Tables[0]);

// Clean up.
oLocalSet.Dispose();
oLocalAdapter.Dispose();
oLocalCommand.Dispose();
oLocalCommand = null;
最佳答案
好,知道了.

第一,我必须重新定位/修改AcceptChanges()行.

包括可能的线

oLocalAdapter.AcceptChangesDuringUpdate = true;

然后我必须添加

SQLiteCommandBuilder oBuilder = new SQLiteCommandBuilder(oLocalAdapter);
oLocalAdapter.UpdateCommand = oBuilder.GetUpdateCommand();

最后一行是更新,并且可以正常工作.这使代码:

// DATABASE (Local): Formulate the SQL command.
String strSqlCommand = "SELECT * FROM tblTest ORDER BY IdPrimary ASC;";
SQLiteCommand oLocalCommand = new SQLiteCommand(strSqlCommand, ClassEngine.Connection);

// DATABASE (Local): Get the data records.
SQLiteDataAdapter oLocalAdapter = new SQLiteDataAdapter(oLocalCommand);
DataSet oLocalSet = new DataSet();
oLocalAdapter.Fill(oLocalSet, "tblTest");

// 
SQLiteCommandBuilder oBuilder = new SQLiteCommandBuilder(oLocalAdapter);

// Try to write to some changes.
String strValue = oLocalSet.Tables[0].Rows[0][8].ToString();
oLocalSet.Tables[0].Rows[0][8] = 9;
strValue = oLocalSet.Tables[0].Rows[0][8].ToString();
oLocalSet.AcceptChanges();
oLocalAdapter.UpdateCommand = oBuilder.GetUpdateCommand();
oLocalAdapter.Update(oLocalSet.Tables[0]);

// Clean up.
oLocalSet.Dispose();
oLocalAdapter.Dispose();
oLocalCommand.Dispose();
oLocalCommand = null;
点击查看更多相关文章

转载注明原文:c#-使用SqliteDataAdapter将更改写入SQLite数据库 - 乐贴网