使用MySqlDataAdapter更新不起作用

我正在尝试使用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() 。 Othwerwise将所有行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()返回到您的DataTable;

 foreach(DataRow row in myTable.Rows) { row.SetAdded(); // For Insert Command row.SetModified(); // For Update Command }