MySqlDataAdapter UpdateCommand无法识别主键

时间:2016-04-12 01:27:55

标签: c# mysql

我正在使用临时表来显示datagridview中的数据。编辑datagridview中的数据时,我正在尝试更新临时表。这是我使用的dataGridView1_RowValidated方法中的代码:

MySqlDataAdapter adapter = new MySqlDataAdapter("select * from     all_plants_temp", con);
                MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);
                adapter.UpdateCommand = builder.GetUpdateCommand();
                adapter.Update(changes);
                ((DataTable)dataGridView1.DataSource).AcceptChanges();

但是,每当我离开编辑过的行时,我都会遇到以下错误:

  

对于不返回任何键列信息的SelectCommand,不支持UpdateCommand的动态SQL生成。

根据错误的建议(以及我访问的每个网站),我需要在表格中包含一个主键。但是,我已经有一个int自动递增主键。这是我用来创建临时表的代码,以及原始非临时表的相关代码。

ALTER TABLE all_plants ADD COLUMN plantID INT PRIMARY KEY AUTO_INCREMENT;
CREATE TEMPORARY TABLE all_plants_temp SELECT * FROM all_plants;

有人可以告诉我代码中的错误吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

如前所述,我相信你的临时表没有主键。 尝试使用此查询。它将使用Primary Key创建临时表。根据需要更改YourPk

CREATE TEMPORARY TABLE all_plants_temp
(YourPk int(10) NOT NULL, PRIMARY KEY (YourPk)) SELECT * from all_plants;