C# 从插入/更新查询获取上次插入的ID返回
我希望在插入visual C#程序时返回最后一个插入的id 错误是:“对象引用未设置为对象的实例。” 我已将tblClipManagerTableAdapter.InsertQuery执行模式设置为scalar 关于如何使用当前代码和设置返回上次插入的ID,是否有任何帮助 使用本地SQL数据库(dbClipManager.sdf) 致意C# 从插入/更新查询获取上次插入的ID返回,c#,sql,visual-studio-2010,sql-server-ce,C#,Sql,Visual Studio 2010,Sql Server Ce,我希望在插入visual C#程序时返回最后一个插入的id 错误是:“对象引用未设置为对象的实例。” 我已将tblClipManagerTableAdapter.InsertQuery执行模式设置为scalar 关于如何使用当前代码和设置返回上次插入的ID,是否有任何帮助 使用本地SQL数据库(dbClipManager.sdf) 致意 编辑 我想我找到了我可以用的东西 但我对这个很陌生。不知道如何完整地编写代码? 我习惯于只使用数据集,而不打开连接,执行SQL cmds:o/ 致以最诚挚的
编辑 我想我找到了我可以用的东西 但我对这个很陌生。不知道如何完整地编写代码? 我习惯于只使用数据集,而不打开连接,执行SQL cmds:o/
致以最诚挚的问候您的方法存在一些问题,因此我建议您快速通读一下
TableAdapter.Insert
,而不是TableAdapter.Update
@@IDENTITY
获取以前生成的ID
。。。这必须在同一个会话中返回,否则SQL将不知道您希望接收哪个ID编辑:
即使在SQL Server 2000中,也不应该使用@identity。@HLGEM你说得对。。。谢谢出于某种原因,我认为
SCOPE\u IDENITY()
是在2005年添加的,但它是在2000年添加的。我想我花在7.0上的时间比我想记住的要多。@MichaelFredrickson非常感谢你的快速回答。很抱歉,更新/插入不匹配。我已经编辑了我的问题。现在,我已经将tableadapter(tblClipManagerTableAdapter.InsertQuery)的执行模式设置为scalar。我的try/catch中仍然出现相同的错误。将SCOPE_IDENTITY()放在何处?@user1281991您可以在insert语句的末尾添加选择SCOPE_IDENTITY()
,insert语句通常是为您的表适配器自动生成的@MichaelFredrickson抱歉,但它仍然不起作用。Visual Studio不允许我将SELECT SCOPE_IDENTITY()放入insert查询中。似乎SQLCE不支持这一点?
// 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());
}