SQL-Server Problem



  • Huhu,

    ich bin C# Anfänger und mache wahrscheinlich etwas total simples falsch.

    Ich verbinde mich auf erfolgreich eine SQL-Server Datenbank und möchte auf dieser Inserts machen. Beim btnAdd wird folgender Code ausgelöst:

    try
                {
                    objConnect.UpdateDatabase(ds);
                    MaxRows = MaxRows + 1;
                    inc = MaxRows - 1;
                    MessageBox.Show("Datenbank-Insert erfolgreich ");
                }
      catch (Exception err)
                {
                    MessageBox.Show(err.Message);
                }
    

    In der Klasse dbConnection.cs steht folgender Code:

    public void UpdateDatabase(System.Data.DataSet ds)
            {
                System.Data.SqlClient.SqlCommandBuilder cb = new                
                            System.Data.SqlClient.SqlCommandBuilder(da_1);
                cb.DataAdapter.Update(ds.Tables[0]);
            }
    

    Es wird kein Fehler geworfen, laut dataset hat er die neue Zeile auch gespeichert, aber im SQLServer wird sie nicht übernommen.

    Aus Verzweiflung habe ich das Ganze mit einer MySql-Datenbank versucht, dort ging der Insert problemlos. Was mache ich da nur falsch??? 😕



  • Und wo ist der Insert?



  • Ich dachte hiermit wird der Insert gemacht:

    cb.DataAdapter.Update(ds.Tables[0]);
    

    Hatte mich an das Tutorial gehalten: http://www.homeandlearn.co.uk/csharp/csharp_s12p9.html

    Laut diesem übernimmt der Updater den eigentlichen Insert. Oder habe ich mich da so getäuscht? 😕



  • Im Tutorial wird aber auch

    DataRow row = ds.Tables[0].NewRow();
    row[1] = textFirstName.Text;
    ds.Tables[0].Rows.Add(row);
    

    vorher aufgerufen. Hast du diesen Code denn auch?

    Und überprüfe mal den Rückgabewert vom DataAdapter.Update:

    int count = cb.DataAdapter.Update(ds.Tables[0]);
    

    count ist dann die Anzahl der geänderten Datensätze (bei dir sollte er dann also 1 sein).



  • Vielen Dank für die Hilfe.

    Ich bekomme als Rückgabewert auch count = 1. Also müsste er doch eigentlich etwas geändert haben. Hat er aber nicht. 😕 Das macht mich wahnsinnig...



  • Weiß keiner mehr einen Rat??? 😕 😕 😕



  • Danny1987 schrieb:

    Hat er aber nicht.

    Woran machst du das fest?



  • Ich schaue im Server-Explorer von VS2013, lasse die Datenbank aktualisieren und anschließend die Tabelle anzeigen. Dort stehen immer noch die alten Datensätze drin. Per Skript einfügen funktioniert natürlich.



  • Bist du sicher, daß du dieselbe Datenbankinstanz benutzt?
    Hast du denn eine lokale Datenbankdatei (und kopierst diese dann immer in das Ausführungsverzeichnis) oder aber eine serverbasierte?


Anmelden zum Antworten