我正在使用临时表来显示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;
有人可以告诉我代码中的错误吗?任何帮助表示赞赏。
答案 0 :(得分:1)
如前所述,我相信你的临时表没有主键。
尝试使用此查询。它将使用Primary Key
创建临时表。根据需要更改YourPk
。
CREATE TEMPORARY TABLE all_plants_temp
(YourPk int(10) NOT NULL, PRIMARY KEY (YourPk)) SELECT * from all_plants;