插入后数据集不反映新的主键

时间:2012-10-30 10:00:07

标签: c# dataset sql-update auto-increment

这是我在这里的第一个问题,请原谅我这种呈现方式。

我有一个MySQL表categories,其中包含以下列:

  • c_id(自动递增
  • c_code
  • c_name

这是我想要做的事情;

  • 数据集包含一个表 - categories
  • 向数据集添加一行(新类别)
  • 使用mysqldataadaptor的{​​{1}}方法
  • 更新数据库
  • 查看datagridview中的数据集条目

问题是我插入新行后,我的数据集的相关行没有显示最后插入的主键(自动生成的主键)。但它显示了价值观。

这是我添加新行的代码

update()

这是我更新数据库的代码

var dr = ds.Tables["categories"].NewRow();
    dr["c_code"] = "tst123";
    dr["c_name"] = "123tdt";
ds.Tables["categories"].Rows.Add(dr);

最后这就是我在行上方查看 SOON AFTER 的数据集

adp.Update(ds.Tables[tempTableName]);

问题:
在网格视图中,只有dataGridView1.DataSource = ds.Tables["categories"]; c_code出现在那里。

如何将最后插入的c_name插入数据集?

2 个答案:

答案 0 :(得分:0)

我猜你必须做一个新的adp.Fill(ds)来获取ID。您只提供c_code和c_name。因此,c_code和c_name是网格中填充的唯一列。 adp.Update更新您的数据库,由于显而易见的原因,它不会在更新后重新加载整个数据集。

答案 1 :(得分:0)

这对我有用: 它在VB中,但你可以看到发生了什么。

mySQLdataAdapter.Update(myDataSet, table)
mySQLcommand.CommandText = "Select Last_Insert_ID();"
lastInsertID = dc.ExecuteScalar()

在mysql适配器更新后立即运行此代码,即使我正在使用数据集,也会提供最后插入的ID。