【问题标题】:SELECT @@ IDENTITY using SQL Server CE from C# code从 C# 代码中使用 SQL Server CE 选择 @@ IDENTITY
【发布时间】:2013-01-21 00:33:40
【问题描述】:

我在 SQL CE 中使用数据适配器/集,我确实创建了以下查询以插入到表中,然后选择 @@IDENTITY, 我希望这个 SELECT 语句每次插入表后都返回学生 ID,这是我的查询:

INSERT INTO [Student] ([Name], [Family], [Address], [Phonenumber])
VALUES(@Name,@Family,@Address,@Phonenumber);
SELECT  @@IDENTITY;

这是我如何调用查询:

int x = da.Insert("Albert", "Alexandra", "No4.Oxford", Telnum);

int x 假设返回我的 ID...

这是我得到的错误:

解析查询时出错。 [令牌行号=4,令牌行偏移量=1,错误令牌=SELECT]

Insert Query it self 它可以工作,但是一旦在最后添加SELECT @@ IDENTITY,我就会出错。

我真的不知道我做错了什么。

【问题讨论】:

标签: c# asp.net sql sql-server-ce


【解决方案1】:

ExecuteNonQuery 的返回值将是这些查询影响的行数。所以你需要使用存储过程而不是单查询。

【讨论】:

    【解决方案2】:

    根据MSDN,CE 不支持每次执行多个命令,您需要同时执行两个命令。

    【讨论】:

    • 我认为你是对的!因为我可以单独检索最后一个 ID,但是一旦我将它们组合起来,我就会出错!这就是 SQL CE 的弱点!但我需要确定是否真的是这样!
    【解决方案3】:

    如果您想在单个调用中执行此操作,则需要使用存储过程而不是Insert,因为它使用不返回任何记录的ExecuteNonQuery。否则,您需要在另一个调用中执行选择以确定身份。

    ExecuteNonQuery 的返回值是一个整数,表示受您的调用影响的行数。

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 1970-01-01
      • 2012-04-15
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多