C# 通过两种方式将DataTable与MySQL数据库同步
我有一个DataSet/DataTable,我希望将更改写入MySQL数据库,如果MySQL数据库中有任何更改,请将这些更改写回我的DataSet/DataTable 简言之: myDataSet->MySQL数据库用户编辑值C# 通过两种方式将DataTable与MySQL数据库同步,c#,mysql,datatable,dataset,database-concurrency,C#,Mysql,Datatable,Dataset,Database Concurrency,我有一个DataSet/DataTable,我希望将更改写入MySQL数据库,如果MySQL数据库中有任何更改,请将这些更改写回我的DataSet/DataTable 简言之: myDataSet->MySQL数据库用户编辑值 myDataSet好的,现在我明白了 第一:当一行的RowState设置为modified时,即设置新值时,我调用mysqlDataAdapter.UpdatedsTable,_tablename;我得到错误是因为设置值与数据库中的值相同 第二:因为我将Eventhand
myDataSet好的,现在我明白了 第一:当一行的RowState设置为modified时,即设置新值时,我调用mysqlDataAdapter.UpdatedsTable,_tablename;我得到错误是因为设置值与数据库中的值相同 第二:因为我将Eventhandler行_更改为活动状态,所以在将表中的值更改为MySQL数据库mysqlDataAdapter.UpdatedsTable中的值后,在我将行状态设置为Unchanged之前,突然调用了_tablename 解决方案: 我只是在搜索和更改远程MySQL服务器上的差异时设置一个bool值。当此值设置为true时,更改的行不会触发UpdateTable。当更改本地表中的值时,因为该值在远程服务器上已更改,如果该行尚未更改,我将为该行调用AcceptChanges。当用户在这么短的时间内对本地表进行更改时,我更新这些更改不会丢失,它们只是本地的,不会立即在远程MySQL服务器上更新
private MySqlDataAdapter mysqlDataAdapter;
private DataSet dsTable;
private string _tablename;
public void ReadTable(string tablename)
{
_tablename = tablename;
String query = "select * from " + tablename;
if (dsTable == null)
dsTable = new DataSet();
mysqlDataAdapter = new MySqlDataAdapter(query, (MySqlConnection)connection);
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(mysqlDataAdapter);
mysqlDataAdapter.Fill(dsTable, tablename);
}
private void Row_Changed(object sender, DataRowChangeEventArgs e)
{... ChangeIntegerValueInReflectedTable(...); }
public void ChangeIntegerValueInReflectedTable(int rowIndex, string columnName, int newValue)
{
dsBom.Tables[0].Rows[rowIndex][columnName] = newValue;
}
public void UpdateTable()
{
mysqlDataAdapter.Update(dsTable, _tablename);
}