ADO .NET Problem - wo bleiben meine Daten?
-
Ich habe es nun endlich geschafft eine Datenbank (SQL Express 2005) mit 2 Tabellen zu erstelen, manuell Abfragen ausführen etc und Daten einfügen, das klappte.
Dann wollte ich die automatische Bindung mit TableAdapter etc ausprobieren. Gelesen werden die Daten ohne Problem, doch wenn ich neue eingebe dann werden diese nicht gespeichert. Ich versuchte folgendes:bindingSource1.EndEdit(); // dataSet11.AcceptChanges(); int anz= customerTableAdapter.Update(dataSet11); //geht auch nicht wenn ich nur customer speichern will (dataset11.customer) MessageBox.Show(anz.ToString());
Die MessageBox gibt die Anzahl geänderter Zeilen zurück (stimmt auch), doch enthalten sind sie danach nicht....
-
Ist der Datensatz denn in der DB? Funktioniert eine Aktualiserung der bestehenden Daten?
-
Nein aktualisieren kann ich die bestehenden Datensäte auch nicht. In der Datenbank sind nur diejenigen welche angezeigt werden korrekt vorhanden, die ich mit INSERT INTO eingefügt habe.
-
Bitte prüfen:
- Datatable zeigt auf ne andere DB / Tabelle
- Session gestartet ohne Commit
-
- Datatable zeigt auf ne andere DB / Tabelle
habe die Verbindungsstrings überprüft, sollte OK sein wenn ich mich nicht total irre
- Session gestartet ohne Commit
Wo kann ich das einstellen; muss ich noch ein Commit ausführen?
-
Schwer bei den wenigen Informationen eine Ferndiagnose zu stellen. Wenn Du ein strong typed DS mit den SQl-Provider baust sollte es eigentlich reichen ein Dataset und den DataAdapter zu erstellen, die Table zu befüllen und dann mit update() aktualisieren. Was du noch prüfen kannst
- dass der Adapter die entsprechenden Update/Insert/Delete-Befehle besitzt (mal mit dem Debugger reinschauen ob de ComnmandBuilder sie ihm gegeben hat)
- dass es dasselbe Dataset ist (welches zu Anzeigen und Aktualisieren verwendet wird)
- alternativ kannst du die datatable in der update-Anweisung übergebe, nicht das Dataset. Sollte aber eigentlich egal sein.
-
Ich dachte eben auch es sei so einfach, es ist ein strong typed DS.
Befehle sind vorhanden wie"INSERT INTO [dbo].[customer] ([First_Name], [Last_Name], [Address], [City], [Country]) VALUES (@First_Name, @Last_Name, @Address, @City, @Country);\r\nSELECT First_Name, Last_Name, Address, City, Country FROM customer WHERE (Last_Name = @Last_Name)"
der Insert welcher ja in meinem Fall ausgeführt werden sollte (er ist irgendwie ein bisschen lang).
DataSet hat es nur eins
-
Halt jetz verstehe ich etwas nicht mehr:
Die Datenbankdatei wird in das Debug-Verzeichnis kopiert und dort werden, wie ich mit dem SQL Server Management Studio herausfinden konnte, die Datensätze richtig eingefügt. Nur wenn ich wieder das Programm starte wird die Datenbank aus dem Projektverzeichnis erneut ins Debug kopiert und überschreibt die andere.
Ist das so üblich?
Ich fragte mich ohnehin wie die Datenbank dann beim Deployment verteilt wird, die sollte ja auch ins Anwendungsverzeichnis oder dasjenige des SQL-Servers und die können sich ja immer unterscheiden.