Beitrag
Ich wollte hier mal einen "Grundkurs" für Datenbank Programmierung erstellen, weil ich im Form das nicht mehr sehen kann, wie teils der Code Aufgebaut ist.
Also fangen wir mal mit der Datenbank Programmierung für Access an. Später, falls erwünscht, erstelle ich noch ein Tutorial für MySQL.
Die MySQL.Data.dll muss Importiert sein.
1. Deklarationen
Als erstes erstellen wir ein Modul. Ist für größere Projekte besser, weil man sonst immer alles in jedem Form neu deklarieren muss.
2. Provider
Dann muss das Programm noch wissen, mit welcher Datenbank sie sich verbinden soll.
3. DataGridView
Falls Ihr eine DataGridView mit den Datanbank Informationen füllen wollt braucht Ihr diesen Code
Allgemein:
Hier man ein Stopp. Ich arbeite mit einer Datenbank mit einer Tabelle (Benutzer) und folgende Spalten in der Tabelle (Name, Alter, EMail, ID). ID sollte in jeder Tabelle forhanden sein, weil ohne die kann man schlecht Einträge in die Datenbank hinzufügen, bearbeiten und löschen. Und Die Spalte hat immer den Primärindex und das Extra, das sie immer automatisch erhöht wird.
DB = Datenbank
Kommen wir nun zum eher Schwierigem Teil
4. Hinzufügen eines Eintrags
Der Befehl zum Hinzufügen von Einträgen ist also so aufgebaut
insert into Tabelle (Alle Spalten) values (werte der Spalten)
Eine String muss zwischen Hochkommas stehen '', Zahlen nicht.
Die Verbindung kann man auch erst später schließen, würde ich aber nicht machen (habe es vor kurzen immer erst nach der IF Abrfage gemacht), weil sonst es Probleme geben kann, wenn man in einem Timer auch einen DB Abfrage hat. Da kommt dann ein Fehler das man die DB Verbindung zuert schließen muss, diese übergehen wir, das wir die Verbindung schnellst möglich wieder schließen, deswegen vor der MSG, weil der User des Programmes, zulange braucht um die MSG weg zu klicken.
5. Bearbeiten
Es ändert sich hier nur der CommandText. Struktur:
update Tabelle_name set spalte = 'wert'
6. Löschen
Hier ist der Restliche Code auch wieder gleich, eben außer der CommandText und die 1. If abfrage, die kann hier weg.
Hier wird er Eintrag gelöscht, der die ID 0 hat.
Struktur:
delete from Tabellen_name
7. Auslesen
Jetzt kommen wir zum wichtigstem Thema, das Auslesen der Datenbank. Wir haben weiter oben schon das auslesen in eine Datagridview behandelt, aber noch nicht in Textboxen oder in eine Listbox.
7.1 Textbox
Hier kommt noch der "Reader" hinzu.
Als erstes "verkürzen" wir den aktuellen Reader (cmd.ExecuteReader in reader). Danach starten wir eine do while schleife diese läuft solange bis alle Einträge der DB abgearbeitet sind. In der schleife ändern wir den Text der einzelnen Textboxen.
Hier brauchen wir noch einen "where" Befehle, weil sonst die Textboxen nur den letzten Eintrag in der Datenbank enthalten. So enthalten Sie den Wert von dem Eintrag mit der ID 0.
Struktur:
reader("Spalten_name")
Der rest ist wieder klar. Reader schließen und DB Verbindung schließen.
7.2 Listbox
Hier ändert sich nicht wirklich viel. Wir brauchen hier kein "where" Befehl, weil wir alle benutzer angezeigt haben wollen.
In der Schleife fügen wir immer die ganzen Namen der User hinzu.
8. ID auslesen
Manche haben sich vielleicht schon gefragt, wie ich die Id des Eintrags rausbekomme, den ich bearbeiten bzw. löschen möchte.
als erstes laden wir alle IDs in eine Liste.
nun kann man ganz leicht die entsprechende id abfragen. z.B. mit einer Listbox:
Nun würde das Programm den Eintrag löschen, der in der Listbox ausgewählt wurde.
Hier komme ich mal zum Ende. Ich hoffe, dass ich nicht so viele Rechtschreibfehler eingebaut habe, wenn doch nimmt es mit nicht übel.
Falls Interesse an einem MySQL Tutorial besteht, dann meldet auch bitte bei mir.
Ich wollte hier mal einen "Grundkurs" für Datenbank Programmierung erstellen, weil ich im Form das nicht mehr sehen kann, wie teils der Code Aufgebaut ist.
Also fangen wir mal mit der Datenbank Programmierung für Access an. Später, falls erwünscht, erstelle ich noch ein Tutorial für MySQL.
Die MySQL.Data.dll muss Importiert sein.
1. Deklarationen
Als erstes erstellen wir ein Modul. Ist für größere Projekte besser, weil man sonst immer alles in jedem Form neu deklarieren muss.
2. Provider
Dann muss das Programm noch wissen, mit welcher Datenbank sie sich verbinden soll.
3. DataGridView
Falls Ihr eine DataGridView mit den Datanbank Informationen füllen wollt braucht Ihr diesen Code
VB.NET-Quellcode
- Dim ds As New DataSet
- Dim dt As New DataTable
- Dim da As OleDbDataAdapter
- Dim bs As New BindingSource
- Public Sub DGV_sehen(ByVal DGV As DataGridView)
- dt.Clear()
- Provider()
- ds.Tables.Add(New DataTable)
- da = New OleDbDataAdapter("select * from Tabelle", con) 'Hier ist das wesentliche. Mit dem * sagen wir dem Programm, das wir alle Spalten der Tabelle laden möchte. Tabelle muss man eben durch den richtigen Tabellennamen ersetzen.
- da.Fill(dt)
- Dim cb As New OleDbCommandBuilder(da)
- bs.DataSource = dt
- DGV.DataSource = bs
- End Sub
Allgemein:
Hier man ein Stopp. Ich arbeite mit einer Datenbank mit einer Tabelle (Benutzer) und folgende Spalten in der Tabelle (Name, Alter, EMail, ID). ID sollte in jeder Tabelle forhanden sein, weil ohne die kann man schlecht Einträge in die Datenbank hinzufügen, bearbeiten und löschen. Und Die Spalte hat immer den Primärindex und das Extra, das sie immer automatisch erhöht wird.
DB = Datenbank
Kommen wir nun zum eher Schwierigem Teil
4. Hinzufügen eines Eintrags
VB.NET-Quellcode
- If txt_name.Text = "" Or txt_alter.Text = "" Or txt_email.Text = "" Then
- msgbox("Füllen Sie alle Felder aus!")
- Else
- Try
- con.Open() 'Verbindung zur Db öffnen
- cmd.CommandText = "INSERT INTO Benutzer(Name, Alter, EMail) VALUES ('" & txt_name.text & "', '" & txt_alter.text & "', '" & txt_name.Text & "')" 'Der Befehl für die DB
- anzahl = cmd.ExecuteNonQuery 'anzahl enthält nun ein Wert alle geänderten/ hinzugefügten/ gelöschten Einträge
- con.close 'Verbindung zur DB schließen
- If anzahl > 0 Then 'Nun wird kontrolliert ob überhaupt ein Eintrag hinzugefügt geworden ist, wenn ja dann die MSG
- MsgBox("Sie haben einen Eintrag gemacht", MsgBoxStyle.Information)
- End If
- Catch ex As Exception
- con.close 'ich schließe hier ebenfalls die Verbindung, weil wenn ein Fehler in dem oberen code passiert, passiert er vor dem schließen der Verbindung. Wenn ich das nicht machen würde käme der Fehler das die Verbindung noch offen ist, wenn ich das nächste mal eine Verbindung öffne.
- MsgBox(ex.Message)
- End Try
- End If
Der Befehl zum Hinzufügen von Einträgen ist also so aufgebaut
insert into Tabelle (Alle Spalten) values (werte der Spalten)
Eine String muss zwischen Hochkommas stehen '', Zahlen nicht.
Die Verbindung kann man auch erst später schließen, würde ich aber nicht machen (habe es vor kurzen immer erst nach der IF Abrfage gemacht), weil sonst es Probleme geben kann, wenn man in einem Timer auch einen DB Abfrage hat. Da kommt dann ein Fehler das man die DB Verbindung zuert schließen muss, diese übergehen wir, das wir die Verbindung schnellst möglich wieder schließen, deswegen vor der MSG, weil der User des Programmes, zulange braucht um die MSG weg zu klicken.
5. Bearbeiten
VB.NET-Quellcode
- If txt_name.Text = "" Or txt_alter.Text = "" Or txt_email.Text = "" Then
- msgbox("Füllen Sie alle Felder aus!")
- Else
- Try
- con.Open()
- cmd.CommandText = "UPDATE Benutzer SET Name = '" & txt_name.text & "', Alter = '" & txt_alter.text & "', EMail = '" & txt_name.Text & "' where ID = 0"
- anzahl = cmd.ExecuteNonQuery
- con.close
- If anzahl > 0 Then
- MsgBox("Sie haben einen Eintrag bearbeitet", MsgBoxStyle.Information)
- End If
- Catch ex As Exception
- con.close
- MsgBox(ex.Message)
- End Try
- End If
Es ändert sich hier nur der CommandText. Struktur:
update Tabelle_name set spalte = 'wert'
6. Löschen
Hier ist der Restliche Code auch wieder gleich, eben außer der CommandText und die 1. If abfrage, die kann hier weg.
Hier wird er Eintrag gelöscht, der die ID 0 hat.
Struktur:
delete from Tabellen_name
7. Auslesen
Jetzt kommen wir zum wichtigstem Thema, das Auslesen der Datenbank. Wir haben weiter oben schon das auslesen in eine Datagridview behandelt, aber noch nicht in Textboxen oder in eine Listbox.
7.1 Textbox
VB.NET-Quellcode
- Try
- con.Open()
- cmd.CommandText = "SELECT * FROM Benutzer WHERE ID = 0"
- reader = cmd.ExecuteReader
- Do While reader.Read
- txt_name.text = reader("Name")
- txt_alter.text = reader("Alter")
- txt_email.text = reader("EMail")
- Loop
- reader.Close()
- con.close
- Catch ex As Exception
- con.close
- MsgBox(ex.Message)
- End Try
Hier kommt noch der "Reader" hinzu.
Als erstes "verkürzen" wir den aktuellen Reader (cmd.ExecuteReader in reader). Danach starten wir eine do while schleife diese läuft solange bis alle Einträge der DB abgearbeitet sind. In der schleife ändern wir den Text der einzelnen Textboxen.
Hier brauchen wir noch einen "where" Befehle, weil sonst die Textboxen nur den letzten Eintrag in der Datenbank enthalten. So enthalten Sie den Wert von dem Eintrag mit der ID 0.
Struktur:
reader("Spalten_name")
Der rest ist wieder klar. Reader schließen und DB Verbindung schließen.
7.2 Listbox
Hier ändert sich nicht wirklich viel. Wir brauchen hier kein "where" Befehl, weil wir alle benutzer angezeigt haben wollen.
In der Schleife fügen wir immer die ganzen Namen der User hinzu.
8. ID auslesen
Manche haben sich vielleicht schon gefragt, wie ich die Id des Eintrags rausbekomme, den ich bearbeiten bzw. löschen möchte.
als erstes laden wir alle IDs in eine Liste.
nun kann man ganz leicht die entsprechende id abfragen. z.B. mit einer Listbox:
Nun würde das Programm den Eintrag löschen, der in der Listbox ausgewählt wurde.
Hier komme ich mal zum Ende. Ich hoffe, dass ich nicht so viele Rechtschreibfehler eingebaut habe, wenn doch nimmt es mit nicht übel.
Falls Interesse an einem MySQL Tutorial besteht, dann meldet auch bitte bei mir.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Chris213“ () aus folgendem Grund: Verbessern