2011-06-25 9 views
5

Tengo una SqlCeParameter instrucción SQL por ejemplo:SqlCeParameter volver Auto ID (clave principal)

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

Una vez que el INSERT es exitosa necesito el ID generado automáticamente (INT clave principal) regresó para que pueda usarlo en una segunda declaración INSERT.

¿Esto es posible para SqlCe? Por favor, si puedes dar un ejemplo.

Respuesta

7

De esta manera:

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 - ¿funcionó? –

+3

BTW, si necesita obtener 'int id', la forma más fácil es hacer esto: 'var id = Convert.ToInt32 ((decimal) command.ExecuteScalar());' –

+1

@DevilCode - solo curiosidad, ¿cuál fue el juicio, cuando seleccionó la respuesta. Pasé un tiempo haciendo código de trabajo para ti, no lo pegué hasta que me aseguré de que funcionara. Y seleccionó una respuesta corta, que ni siquiera contiene una declaración de código válida. Además de eso, la url referenciada no contiene una solución completa. También muestra la conversión de decimal a cadena, lo cual es una muy mala práctica. Bueno ... esto es algo desalentador sobre StackOverflow ... –

4
ExecuteScalar("SELECT @@IDENTITY") 

Más detalles se pueden encontrar here.

Cuestiones relacionadas