2011-06-25 113 views
5

我有例如SQL SqlCeParameter聲明:SqlCeParameter返回自動ID(主鍵)

mySQLCommand1.CommandText = @" 
    INSERT INTO clientSubjectiveComplaints (clientSubComplaintCreated) 
    VALUES (@ClientSubComplaintCreated) 
    "; 

一旦INSERT是成功的,我需要自動生成的ID(INT主鍵)返回,這樣我可以用它在第二個INSERT聲明。

這是可能的SqlCe?請如果你能提供一個例子。

回答

7

像這樣:

using (var connection = new SqlCeConnection(Settings.Default.Database1ConnectionString)) 
using (var command = connection.CreateCommand()) 
{ 
    connection.Open(); 

    command.CommandText = @" 
     INSERT Test (Name) 
     VALUES (@TestName) 
     "; 
    command.Parameters.AddWithValue("TestName", "SomeName"); 
    command.ExecuteNonQuery(); 

    command.CommandText = "SELECT @@IDENTITY"; 
    var id = command.ExecuteScalar(); 
} 
+0

@DevilCode - 沒有工作? –

+3

順便說一句,如果你需要'int id',最簡單的方法就是這樣做:'var id = Convert.ToInt32((decimal)command.ExecuteScalar());' –

+1

@DevilCode - 只是好奇,當你選擇答案時,判斷是什麼。我花時間爲你製作工作代碼,直到確保它能正常工作,才粘貼它。你選擇了簡短的答案,甚至沒有包含有效的代碼語句。最重要的是,引用的url不包含完整的解決方案。它也顯示從十進制通過字符串轉換,這是非常糟糕的做法。那麼...這是一些相當令人沮喪的StackOverflow ... –

4
ExecuteScalar("SELECT @@IDENTITY") 

更多詳細信息可查詢here