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?