Hi, ich schreibe über einen insert into Befehl Daten in eine MS SQL Datenbank. Soweit so gut. Dann wollte ich mir mit Selected Scope die erstellte ID holen. Mein Problem ist nun das die ID die ich zurück bekomme Null ist. Was mach ich falsch? Hier mein Code
int dbschreiben(string Bemerkungen, string Seriennummer, string TypID, string HerstellerID)
{
int zeilen;
string scope;
string mycommand = "INSERT INTO hardware (Seriennummer, Bemerkungen, TypID, HerstellerID) VALUES (@SN,@BM,@TID,@HID)";
SqlCommand myinsert = new SqlCommand(mycommand, sqlcon1);
//Parameter definieren/füllen
myinsert.Parameters.Add("@SN", SqlDbType.VarChar, 50).Value= Seriennummer;
myinsert.Parameters.Add("@BM", SqlDbType.Char, 160).Value = Bemerkungen;
myinsert.Parameters.Add("@TID", SqlDbType.Int, 4).Value = TypID;
myinsert.Parameters.Add("@HID", SqlDbType.Int, 4).Value= HerstellerID;
try
{
sqlcon1.Open();
zeilen = myinsert.ExecuteNonQuery();
if (zeilen == 1)
{
string myselectedscope = "SELECT SCOPE_IDENTITY() AS [hardware.HardwareID]";
SqlCommand myscope = new SqlCommand(myselectedscope, sqlcon1);
scope = myscope.ExecuteScalar().ToString();
zeilen = Convert.ToInt16(scope);
}
}
finally
{
sqlcon1.Close();
}
return zeilen;
}
MFG
Ich habe eine Lösung gefunden, alelrdings weiß ich nicht wie gut die ist...hier der Code
int dbschreiben(string Bemerkungen, string Seriennummer, string TypID, string HerstellerID)
{
int zeilen;
string mycommand = "INSERT INTO hardware (Seriennummer, Bemerkungen, TypID, HerstellerID) VALUES (@SN,@BM,@TID,@HID);SELECT SCOPE_IDENTITY() AS [hardware.HardwareID]";
SqlCommand myinsert = new SqlCommand(mycommand, sqlcon1);
//Parameter definieren/füllen
myinsert.Parameters.Add("@SN", SqlDbType.VarChar, 50).Value= Seriennummer;
myinsert.Parameters.Add("@BM", SqlDbType.Char, 160).Value = Bemerkungen;
myinsert.Parameters.Add("@TID", SqlDbType.Int, 4).Value = TypID;
myinsert.Parameters.Add("@HID", SqlDbType.Int, 4).Value= HerstellerID;
try
{
sqlcon1.Open();
zeilen =Convert.ToInt32(myinsert.ExecuteScalar());
}
finally
{
sqlcon1.Close();
}
return zeilen;
}
Allerdings weiß ich nicht wie ich es abfangen soll, wenn der insert mal nicht klappen sollte...warum auch immer. Dann währe nämlich zeilen = "" und dann würde ich eine Exeption bekommen.
Jemand nen Tipp? ODer ist mein Ansatz müll und es gibt einen besseren weg?
MFG