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