Laden...

Problem mit Selected Scope

Erstellt von King-Malkav vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.284 Views
King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren
Problem mit Selected Scope

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

King-Malkav Themenstarter:in
264 Beiträge seit 2006
vor 17 Jahren

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