使用MySqlDataAdapter / MySqlCommandBuilder强制autoinc字段

时间:2015-03-25 10:29:32

标签: c# mysql ado.net

使用C#和MySQL ADO.NET连接器,我使用MySqlDataAdapter和MySqlCommandBuilder来更新表。

是否可以暂时强制使用autoinc字段?

  DataRow row = ...
  row["Id"] = 90; // force autoinc value
  using (MySqlDataAdapter adapter = ...)
  {
    MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
    int result = adapter.Update(new DataRow[] { row });
    // The inserted ID is 20 and not 90...

2 个答案:

答案 0 :(得分:0)

是的,你可以,只要你在你提供的代码示例中明确指定值,它就可以工作。当然,如果指定了重复值,它将失败。

如果省略了值或值为NULL或0或DEFAULT,则自动增量仅应用于插入。

答案 1 :(得分:0)

@ A.Baudouin我想你想说"不幸的是,正如你在上面的例子中所看到的,它确实工作"!你有没有找到解决方案?我有完全相同的问题,但发现如果你使用MySql Workbench修改值,它的工作正常。所有Workbench都是正常的UPDATE命令,因此我猜这是MySqlAdapter的问题,或者可能是"功能"!我最终直接更新了数据库,如:

MySqlHelper.ExecuteNonQuery(myConnection, "UPDATE MyTable SET Id = 90 WHERE Id = 7", null);

(或者你想用WHERE识别正确的行)。这很好用。