异常出现的原因
MySqlDataAdapter没有设置UpdateCommand。
异常的解决
需要注意两点:
- 生成MySqlDataAdapter的查询语句必须返回主键或unique列
- 设置MySqlDataAdapter的查询指令后,不会自动生成相应的更新、添加和删除指令,可以通过使用MySqlCommandBuilder自动生成相应的其他指令:
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(Adapter);
示例
//mySelectQuery查询语句必须返回主键或唯一列
public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName)
{
MySqlConnection myConn = new MySqlConnection(myConnection);
MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn);
MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter);
myConn.Open();
DataSet ds = new DataSet();
myDataAdapter.Fill(ds, myTableName);
//修改dataset中的数据....
//没有生成MySqlCommandBuilder时执行以下代码会出错
myDataAdapter.Update(ds, myTableName);
myConn.Close();
return ds;
}