我插入了一行,我想得到它的ID,加上一个int并插入该行

时间:2012-03-10 08:22:43

标签: c# sql

我在我的表中插入了一行,我希望得到它的ID,并加上一个int并插入该行。

但我不知道如何获得它的身份。

这是插入代码:

objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO Moin " +
                         " (Title, TotalID, Code ) " +
                         "VALUES (@Title , @TotalID, @Code )";

3 个答案:

答案 0 :(得分:1)

objCommand.Connection = objConnection;
            objCommand.CommandText = "INSERT INTO Moin " +
                " (Title, TotalID, Code ) " +
                "VALUES (@Title , @TotalID, @Code ) SELECT SCOPE_IDENTITY()";
object id = objCommand.ExecuteScalar();

答案 1 :(得分:1)

尝试在查询中使用OUTPUT clause SQL Server - 它可以返回任何刚插入的值(这里我假设您的列被称为ID - 根据需要进行调整):

objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO Moin(Title, TotalID, Code ) " +
                         "OUTPUT Inserted.ID " +
                         "VALUES (@Title , @TotalID, @Code ); "  

然后像这样执行:

int result = (int)objCommand.ExecuteScalar();

由于您只返回一行和一列(只是INT),因此您可以使用.ExecuteScalar()INSERT语句中检索该值。

使用OUTPUT子句,您可以返回刚刚插入的任何值 - 而不仅仅是标识列。因此,您还可以使用默认值或任何需要返回由数据库填充的值。如果您返回多个值,则需要使用数据阅读器全部阅读 - ExecuteScalar()仅适用于单个值。

但是,正如Anders正确提到的那样 - 使用像Entity Framework这样的ORM可以自动完成所有这些操作,而且您不必再处理这些原始SQL命令....

答案 2 :(得分:0)

在字符串中构建SQL命令应被视为传统技术。如果您使用Entity Framework或linq-to-sql,则会自动为您处理id的检索。

使用纯SQL,使用SCOPE_IDENTITY()函数检索插入元素的id。