2012-03-10 76 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命令......

相關問題