2016-10-08 2 views
0

Ich habe ein Kontaktinformationsformular in Visual Studio (mit C#), die verwendet werden kann, um den Kontakt in einen Kunden zu verwandeln, um dies zu tun, ich möchte die ID aus dem Kontakt senden wurde nur für das andere Formular erstellt, und dazu habe ich eine gespeicherte Prozedur erstellt, die die ID unter Verwendung von SCOPE_IDENTITY() zurückgibt. Es funktioniert in SQL Server und gibt die Identität korrekt zurück, aber wenn ich versuche, es zu erwerben, konvertiere das int in eine Zeichenfolge und setze es in eine Beschriftung, um es als 0 zu lesen.Identität Wert zurückgegeben als 0 mit SCOPE_IDENTITY()

Meine gespeicherte Prozedur ist wie folgt.

In meinem form.aspx.cs habe ich den folgenden Code, um auf die DB zuzugreifen.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    SqlCommand cons = new SqlCommand("IdentityTest", cncon); 
    cons.CommandType = CommandType.StoredProcedure; 

    cons.Parameters.Add("@FirstName", SqlDbType.NVarChar); 
    cons.Parameters.Add("@LastName", SqlDbType.NVarChar); 
    cons.Parameters.Add("@id", SqlDbType.Int); 

    cons.Parameters["@FirstName"].Value = nom.Value; 
    cons.Parameters["@LastName"].Value = dirclie.Value; 
    cons.Parameters["@id"].Value = IdCliente; 

    string IdClientesString = IdCliente.ToString(); 

    cncon.Open(); 
    cons.ExecuteNonQuery(); 

    Label1.Text = IdClientesString; 
    cncon.Close(); 
} 
+0

Siehe diese Antwort auf das Duplikat - http://Stackoverflow.com/a/290772/27825 –

Antwort

0

Sie müssen den @id Parameter als Ausgang Parameter in C# -Code definieren:

SqlParameter idParam = cons.Parameters.Add("@id", SqlDbType.Int); 
idParam.Direction = ParameterDirection.Output; 

und Ihre Abfrage nach der Ausführung müssen Sie auslesen den Wert:

cons.ExecuteNonQuery(); 
int newIdValue = Convert.ToInt32(cons.Parameters["@id"].Value); 
+0

J Wir haben es versucht, keine Fehler, aber die Beschriftung lautet 0. – Marcus

Verwandte Themen