Laden...

Daten aus Formular in Tabelle speichern?

Erstellt von saitho vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.270 Views
S
saitho Themenstarter:in
1 Beiträge seit 2014
vor 9 Jahren
Daten aus Formular in Tabelle speichern?

Heyho,

ich bin ein kompletter Neueinsteiger in C#, und beschäftige mich auch eher mit PHP... Ich wollte mir dennoch gerne ein Programm schreiben, bei dem ich einfach Spiele in eine lokale Datenbank (mdb) eintragen kann.
Das Formular und die Abfrage steht soweit, nur das Eintragen der Spiele macht mir noch Probleme. 8o

Der Code ist dieser:

                DataRow newGamesRow = this.database1DataSet.Tables["games"].NewRow();

                newGamesRow["game_title"] = title;
                newGamesRow["game_platform"] = game_platform;

                this.database1DataSet.Tables["games"].Rows.Add(newGamesRow);

                // Save the new row to the database 
                this.gamesTableAdapter.Update(this.database1DataSet.games);

                try
                {
                    this.Validate();
                    this.gamesBindingSource.EndEdit();
                    this.gamesTableAdapter.Update(this.database1DataSet.games);
                    MessageBox.Show("Update successful");
                    this.Close();
                    Form1 f1 = new Form1();
                    f1.Refresh();
                }
                catch (System.Exception)
                {
                    MessageBox.Show("Update failed");
                }

Leider wird der Eintrag nicht gespeichert. Eine Fehlermeldung bekomme ich nicht.
Bei den Variablen title und game_platform wird garantiert ein Wert übergeben. Die Tabelle selbst besteht aus den Spalten id, title und game_platform, wobei id einen PRIMARY_KEY mit IDENTITY hat.

Ich freue mich über Lösungsvorschläge. 🙂

Liebe Grüße
saitho

55 Beiträge seit 2014
vor 9 Jahren

Fehlt nicht der .AcceptChanges() -Aufruf?
Wie dem auch sei, Inserting and Updating data to MDB
kann dir eventualiter helfen.

Gruß..
-3r0rXx

'Tis not too late to seek a newer world.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo saitho,

wenn dus gut machen willst, versuche mdb zu vermeiden und benutze irgendwas andres, nur nicht Access 😉. Ms Server compact beispielsweise.

Dann schau dir das Entity Framework und das UnitOfWork-Repository-Pattern an.

Habe in UnitOfWok-Structure by Offering.Solutions (with Example-Solution) darüber gebloggt.

Gruss

Coffeebean

T
67 Beiträge seit 2010
vor 9 Jahren

Zum lokalen speichern von Daten kann ich SQLite empfehlen. Das ganze ist eine Serverlose SQL Datenbank. Man muss also nicht erst groß irgendwelche SQL Server einrichten.

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo Talon,

bei MS Server Compact braucht man ebenso keinen Server einrichten. Wenn mich nicht alles täuscht, braucht man zu dem SQlite noch eine 3rd-Party-Lib, die aber afaik sehr gut dokumentiert ist und man gute Beispiele im Netz findet.

Jedenfalls lässt sich mit beiden Lösungswegen ein gutes Ergebnis erzielen.

Gruss

Coffeebean

2.080 Beiträge seit 2012
vor 9 Jahren

Oder LocalDb

Ich bin mir nicht ganz sicher, aber ich meine, es wird nur .NET 4.0.2 oder neuer benötigt.
Außerdem ist es echt toll in VS2013 integriert, es lief alles sehr einfach ab und hatte ungefähr den Komplexionsgrad vom Erstellen einer simplen Code-Datei.

Zu SQLite:

Die Doku ist echt gut, das muss man schon zugeben. Ich würde glatt sagen, dass die besser ist, als das, was ich bisher bei Microsoft so gesehen habe. Mir gefällt z.B. die Darstellung der unterstützten SQL-Befehle sehr gut.

Allerdings habe ich es nicht geschafft, dass SQLite und EntityFramework 6.x zusammen arbeiten. Mit 5.x funktioniert es, aber nicht 6.x

Aus dem Grund verwende ich jetzt doch LocalDb und bin bisher zufrieden. Testen konnte ich meine erste Anwendung mit LocalDb aber noch nicht, die steckt noch in den Kinderschuhen. Einzig das Datenbank-Repository habe ich lokal getestet und das lief komplett problemlos.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

F
10.010 Beiträge seit 2004
vor 9 Jahren

LocalDB erfordert die Installation der LocalDB, und das ist vom Umfang her etwa mit dem SqlServer Express vergleichbar.

Und wenn man SQLite benutzen will und weis das man dabei bleibt, wäre eher SQLite-Net mit den Extensions zu empfehlen.
An Komfort und Geschwindikeit kommt EF nicht ran.

M
1 Beiträge seit 2014
vor 9 Jahren

ich deinen code etwas gekürzt, war vieles dabei was du für diesen fall nicht brauchst.
Ich habs nicht gestestet, würd ich aber machen wenn du dden gessmten code sendest.
Odereben dein Project so abspeckst, dass du hier was absetzten kanst, was man leicht in ein testproject übernehmen kann.

DataRow newGamesRow = this.database1DataSet.Tables["games"].NewRow();

                newGamesRow["game_title"] = title;
                newGamesRow["game_platform"] = game_platform;

                this.database1DataSet.Tables["games"].Rows.Add(newGamesRow);

                // Save the new row to the database
             

                try
                {
                  
                    this.gamesTableAdapter.Update(this.database1DataSet.games);
                    MessageBox.Show("Update successful");
                    this.Close();
                 
                }
                catch (System.Exception)
                {
                    MessageBox.Show("Update failed");
                }