使用MySqlDataAdapter更新不工作
本文关键字:工作 更新 MySqlDataAdapter 使用 | 更新日期: 2023-09-27 18:02:43
我试图使用MySqlDatAdapter来更新MySql表。但是,表永远不会更新!!我以前这样做过,但与SQL服务器。还有什么是特定的MySql,我在我的代码中缺失?
DataTable myTable = new DataTable("testtable");
MySqlConnection mySqlCon = new MySqlConnection(ConfigurationManager.ConnectionStrings["DBConStr"].ConnectionString);
MySqlCommand mySqlCmd = new MySqlCommand("SELECT * FROM testtable WHERE Name = 'Tom'");
mySqlCmd.Connection = mySqlCon;
MySqlDataAdapter adapter = new MySqlDataAdapter(mySqlCmd);
MySqlCommandBuilder myCB = new MySqlCommandBuilder(adapter);
adapter.UpdateCommand = myCB.GetUpdateCommand();
mySqlCon.Open();
adapter.Fill(myTable);
myTable.Rows[0]["Name"] = "Was Tom";
myTable.AcceptChanges();
adapter.Update(myTable);
mySqlCon.Close();
谢谢
在更新前删除myTable.AcceptChanges()
。否则,将所有行RowState
设置为Unchanged
,因此DataAdapter将不知道更改了某些内容。
adapter.Update(myTable)
将在更新完成后调用AcceptChanges
。
所以…
myTable.Rows[0]["Name"] = "Was Tom";
//myTable.AcceptChanges();
adapter.Update(myTable);
我的一些人需要看看下面的解决方案;在其他情况下,人们可能需要不同的解决方案。即使在运行时调试时也不要对Datatable做任何操作,
myTable.GetChanges(); // Return Any of Chnages Made without applying myTable.Accepchanges()
myTable.GetChanges(DataRowState.Added); // Return added rows without applying myTable.Accepchanges()
myTable.GetChanges(DataRowState.Deleted);
myTable.GetChanges(DataRowState.Detached);
myTable.GetChanges(DataRowState.Modified);
myTable.GetChanges(DataRowState.Unchanged);
您可以根据上述命令获取数据。因此,在传递数据表更新或插入或删除命令之前,最好尝试调试。
如果myTable.GetChanges()返回null,那么你可以SetAdded()或SetModified()回你的数据表;
foreach(DataRow row in myTable.Rows)
{
row.SetAdded(); // For Insert Command
row.SetModified(); // For Update Command
}