从插入/更新查询中获取最后插入的ID返回

时间:2012-03-26 16:37:23

标签: c# sql visual-studio-2010 sql-server-ce

我希望在插入我的visual C#程序时返回最后插入的id。

// Insert to database
try
{

    int result = int.Parse(tblClipManagerTableAdapter.InsertQuery(textBox2.Text, textBox1.Text).ToString());
    MessageBox.Show(result.ToString());
}
catch (Exception ex) {
    MessageBox.Show("Fejl: " + ex.Message.ToString());
}

错误是:“对象引用未设置为对象的实例。”

我已将tblClipManagerTableAdapter.InsertQuery执行模式设置为标量。

有关如何使用当前代码和设置返回最后插入的ID的任何帮助?

使用本地SQL数据库(dbClipManager.sdf)。

祝你好运


修改

我想我发现了一些我可以使用的东西。

但我对此很新。不确定如何完成编写代码? 我以前只使用数据集,而不是打开连接,执行SQL cmds。 :O /

http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/1d1d3267-dc29-470b-bb20-00487a39bc87/

祝你好运

1 个答案:

答案 0 :(得分:4)

您的方法存在一些问题,因此我建议您快速阅读table adapter and make sure that you've got the basics down

  1. 如果您要添加新记录,则应致电TableAdapter.Insert,而不是TableAdapter.Update
  2. 您无法为数据库创建第二个命令,并使用@@IDENTITY取回先前生成的ID ...这必须在同一会话中返回,否则SQL将不知道你希望收到哪个ID。
  3. 如果将表适配器的执行模式设置为标量,则ID将是方法调用的返回值。 Please see this Question and Answer on the same issue that you're experiencing.

  4. 编辑: Please see this walk-through for what you're trying to accomplish.