Gutes Tutorial für die Verwendung von Datenbanken

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Gutes Tutorial für die Verwendung von Datenbanken

    Hallo,
    ich wollte mir ein Programm schreiben, was die Verwendete Zeit für bestimmte Sachen speichert.
    Da musste ich natürlich sofort an Datenbanken denken, da was anderes keinen Sinn macht.
    Nun stehe ich ganz am Anfang, und komme schon nicht weiter.
    Welche Datenbank soll ich verwenden ?

    Ich finde keine vernümpftigen Anleitungen, denn leider habe ich mit Datenbanken bis jetzt noch nix gemacht.

    Also ich hatte schonmal das hier:

    VB.NET-Quellcode

    1. Imports System.Data.SqlServerCe
    2. Module SQL
    3. Sub setSQL(ByVal SQL As String)
    4. Dim conn As New SqlCeConnection
    5. Dim cmd As New SqlCeCommand
    6. conn.ConnectionString = "datasource = " & Application.StartupPath & "\database.sdf"
    7. cmd.Connection = conn
    8. cmd.CommandText = SQL
    9. conn.Open()
    10. cmd.ExecuteNonQuery()
    11. conn.Close()
    12. Try
    13. Catch ex As Exception
    14. MessageBox.Show("SetSQL:Command fail")
    15. End Try
    16. End Sub
    17. Sub GetSQL(ByVal SQL As String)
    18. Dim conn As New SqlCeConnection
    19. Dim cmd As New SqlCeCommand
    20. conn.ConnectionString = "datasource = " & Application.StartupPath & "\database.sdf"
    21. cmd.Connection = conn
    22. cmd.CommandText = SQL
    23. Dim da As New SqlCeDataAdapter(cmd)
    24. Dim dt As New DataTable
    25. conn.Open()
    26. da.Fill(dt)
    27. conn.Close()
    28. Wochenplan.dgvwochenplan.DataSource = dt
    29. Try
    30. Catch ex As Exception
    31. MessageBox.Show("GetSQL:Command fail")
    32. End Try
    33. End Sub
    34. End Module



    Allerdings geht angeblich nie der Datentyp, bei setSQL.


    Würde mich eventuell über ein gutes Tutorial freuen, oder wenn man mir hier ein wenig hilfe am Anfang gibt. :)
    Mfg
    lol

    Lol11 schrieb:

    Da musste ich natürlich sofort an Datenbanken denken, da was anderes keinen Sinn macht.

    Achja, solche Äusserungen sind immer provokativ ;) Wieso macht etwas anderes Deiner Meinung nach keinen Sinn ?

    Du hast (mindestens) folgende Alternativen:
    • Dataset / Datatable
      Persistierung (Speichern) über Dataset.Read, Dataset.Load in eine XML-Datei
      Vorteil: schnell , einfach, einfach änderbar wenn Datenmodell noch iexperimentell (also meistens), verwendbar bis einigen zig MB an Datensätzen, Datadesigner in VS
      Abfrage: SQL ähnliche Abfragesprache
      Nachteil: EDR's Schlagmichtot-Lösung
    • Business Objects , i.e. Listen, IEnumerables
      Persistierung über XML Serialisierung (1 Zeile)
      Abfrage: LinQ
      Vorteil: ähnlich wie Datasets, BO's normale Klassen
      Nachteil: mein Lieblingsthema
    • Datenbanken über ADO.NET
      Persistierung: als DB über SQL Statements
      Abfrage: SQL
      Vorteil: grosse Datenmengen möglich, WAN-fähig (Internet/Server), weitgehende DB Provider Unabhängigkeit
      Nachteil: Anpassung bei DB-Modell Änderungen
    • DB Programmierung 'zu Fuss' , wie in Deinem Beispiel
      Vorteile/Nachteile: jeder hat mal so angefangen
    • LinQ to Entities
      Weiterführung der Business Objects, Unterstützung duch VS noch sehr ausbaubar

    Du siehst also Du hast durchaus jede Menge Auswahl. Mein Favorit für den Anfang wäre wohl aufrund der Einfachheit und Dokumentation die Dataset/Datatable Lösung.Willst Du allerdings aus Interesse mit Datenbankprogrammierung anfangen, so ist das ja OK. Tutorien findest Du am Besten in Büchern, hier im Forum im Bereich Datenbanken, Google ....

    Lol11 schrieb:

    Welche Datenbank soll ich verwenden ?

    Immer eine Frage der Verwendung/Anforderungen, gebräuchlich wären z.B.
    - Acess (lokal)
    - SQLite (lokal) (!)
    - MySQL (Web)
    - SQL Server (MultiUser) im Netzwerk

    Meine Favoriten wären hier klar SQLite (einfach) für eine lokale Lösung, mySQL für eine WebLösung.

    Hoffe das gibt genügend Info und Raum für weitere Fragen, auch wenn der Überblick sehr adhoc und bestimmt nicht vollständig war.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kangaroo“ ()

    wieso geht dann der Code oben nicht?
    Ich bekomme immer errors.
    Ich habe es jetzt seit 2Stunden nicht geschafft mehr als eine Datenbank zu erstellen.
    Weder Schreiben noch abfragen kann ich, obwohl ich solangsam alles im Internet gelesen habe...
    wie kann das hier nicht gehen

    VB.NET-Quellcode

    1. Sub setSQL(ByVal SQL As String)
    2. Try
    3. Dim conn As New SqlCeConnection
    4. Dim cmd As New SqlCeCommand
    5. conn.ConnectionString = "datasource = " & Application.StartupPath & "\database.sdf"
    6. cmd.Connection = conn
    7. cmd.CommandText = SQL
    8. conn.Open()
    9. cmd.ExecuteNonQuery()
    10. conn.Close()
    11. Catch ex As Exception
    12. MessageBox.Show("SetSQL:Command fail")
    13. End Try
    14. 'aufruf!
    15. setSQL ("CREATE TABLE testtable (id integer (10), name char(50))")
    16. End Sub

    ?
    EDIT:
    also gut es geht, aber nur wenn ich "Create Table timetable (MyID int identity(0,1), Col1 nchar(100))""
    benutze
    was bedeutet das identity und die 0,1 bei der ersten spalte

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lol11“ ()

    Lol11 schrieb:

    wieso geht dann der Code oben nicht?

    Wenn Du alle nützlichen Informationen darüber WAS nicht funktioniert einfach unterdrückst, wirst Du es auch nie erfahren. Lass Dein Try..Catch weg, dann bekommst Du eine sehr genaue Fehlermeldung.

    Genauso schreibst Du Deinen Connectionstring mal einfach so rein: wenn Deine DB im gleichen Verzeichnis lieg wie die Anwendung kannst Du ApplicationStartupPath eh weglassen da Default.

    Für SQLite ('zu Fuss')hab ich mal folgenden alten Code rausgekramt:

    SQLite Beispiel

    VB.NET-Quellcode

    1. Imports System.Data.SQLite
    2. Public Class Form1
    3. Private conn As SQLiteConnection
    4. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    5. conn.Close()
    6. End Sub
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. conn = New SQLiteConnection("Data Source=Test.s3db")
    9. conn.Open()
    10. End Sub
    11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    12. Dim cmd As SQLiteCommand = New SQLiteCommand(conn)
    13. cmd.CommandText = "SELECT * from Customer"
    14. Dim reader As SQLiteDataReader = cmd.ExecuteReader()
    15. Try
    16. While reader.Read()
    17. Debug.Print(reader.GetString(1))
    18. End While
    19. Catch
    20. Finally
    21. reader.Close()
    22. End Try
    23. End Sub
    24. End Class


    Keine Ahnung ob das was nützt ...

    Lol11 schrieb:

    Ich finde keine vernümpftigen Anleitungen, denn leider habe ich mit Datenbanken bis jetzt noch nix gemacht.

    hasteschon im Tutorial-Bereich von VBParadise geguckt?

    (Naja - meine Werke vermeiden Datenbanken eher, weil ohne DB (DatasetOnly) ist erstmal einfacher, und das Databinding-KnowHow braucht man sowieso, ob nun mit oder ohne DB.)