2011-06-25 110 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