2012-03-10 34 views

回答

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

大厦SQL命令字符串中应该算是传统的技术。如果您使用Entity Framework或linq-to-sql,则会自动为您处理id的检索。

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

1

使用您的查询的SQL Server OUTPUT clause尝试 - 它可以返回任何刚插入值(在这里我假设你的列称为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正确地提到的那样 - 使用像实体框架这样的ORM将自动为您做所有这些工作,而且您不必再处理那些原始SQL命令......

相关问题