Csharp/C#教程:使用MySqlDataAdapter更新不起作用分享


使用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;

上述就是C#学习教程:使用MySqlDataAdapter更新不起作用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1014022.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐