Hilfe bei einer Datenbank

  • VB.NET

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

    Hilfe bei einer Datenbank

    Hallo zusammen,

    ich versuche in Visual Basic 2010 Express mir einen "Vokabeltrainer" zu programmieren.
    Dafür soll eine Access-Datenbank die Grundlage sein.

    Hier zu meinem Code:

    Quellcode

    1. Imports System.Data.OleDb
    2. Imports System.Net
    3. Imports System.IO
    4. Class Form1
    5. Dim con As New OleDbConnection
    6. Dim reader As OleDbDataReader
    7. Dim pnummer As New ArrayList
    8. Dim cmd As New OleDbCommand
    9. Public a As String
    10. Private Sub cmdAlleSehen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAlleSehen.Click
    11. AlleSehen()
    12. If Not IO.File.Exists("C:\language_english.mdb") Then
    13. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    14. Exit Sub
    15. End If
    16. End Sub
    17. Private Sub cmdNameSuchen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNameSuchen.Click
    18. If Not IO.File.Exists("C:\language_english.mdb") Then
    19. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    20. Exit Sub
    21. End If
    22. Try
    23. con.Open()
    24. cmd.CommandText =
    25. "select * from english:Tabelle where" & " deutsch like '%" & txtName.Text & "%'"
    26. Ausgabe()
    27. Catch ex As Exception
    28. End Try
    29. con.Close()
    30. End Sub
    31. Private Sub cmdEinfügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEinfügen.Click
    32. If Not IO.File.Exists("C:\language_english.mdb") Then
    33. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    34. Exit Sub
    35. End If
    36. Dim anzahl As Integer
    37. Try
    38. con.Open()
    39. cmd.CommandText =
    40. "insert into english:Tabelle " & "(deutsch, englisch) values ('" & txtName.Text & "', '" & txtVorname.Text & "')"
    41. anzahl = cmd.ExecuteNonQuery()
    42. If anzahl > 0 Then
    43. MessageBox.Show("Die Datenbank wurde aktualisiert!")
    44. End If
    45. Catch ex As Exception
    46. End Try
    47. con.Close()
    48. AlleSehen()
    49. End Sub
    50. Private Sub cmdÄndern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdÄndern.Click
    51. If Not IO.File.Exists("C:\language_english.mdb") Then
    52. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    53. Exit Sub
    54. End If
    55. Dim anzahl As Integer
    56. Try
    57. con.Open()
    58. cmd.CommandText = "update english:Tabelle set " & "deutsch = '" & txtName.Text & "', " & "englisch = '" & txtVorname.Text & "')"
    59. anzahl = cmd.ExecuteNonQuery()
    60. If anzahl > 0 Then
    61. MessageBox.Show("Die Datenbank wurde geändert!")
    62. End If
    63. Catch ex As Exception
    64. End Try
    65. con.Close()
    66. AlleSehen()
    67. End Sub
    68. Private Sub cmdLöschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLöschen.Click
    69. If Not IO.File.Exists("C:\language_english.mdb") Then
    70. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    71. Exit Sub
    72. End If
    73. Dim anzahl As Integer
    74. If txtName.Text = "" Then
    75. MessageBox.Show("Bitte wählen Sie einen Datensatz aus!")
    76. Exit Sub
    77. End If
    78. Try
    79. con.Open()
    80. cmd.CommandText = "delete from english:Tabelle " & "where deutsch = " & pnummer(lstTab.SelectedIndex)
    81. anzahl = cmd.ExecuteNonQuery()
    82. If anzahl > 0 Then
    83. MessageBox.Show("Der Datensatz wurde gelöscht!")
    84. End If
    85. Catch ex As Exception
    86. End Try
    87. con.Close()
    88. AlleSehen()
    89. End Sub
    90. Private Sub AlleSehen()
    91. Try
    92. con.Open()
    93. cmd.CommandText = "select * from english:Tabelle"
    94. Ausgabe()
    95. Catch ex As Exception
    96. End Try
    97. con.Close()
    98. txtName.Text = ""
    99. txtVorname.Text = ""
    100. End Sub
    101. Private Sub Ausgabe()
    102. reader = cmd.ExecuteReader()
    103. lstTab.Items.Clear()
    104. pnummer.Clear()
    105. Do While reader.Read()
    106. lstTab.Items.Add(reader("deutsch") & " # " & reader("englisch"))
    107. pnummer.Add(reader("deutsch"))
    108. Loop
    109. reader.Close()
    110. End Sub
    111. Private Sub lstTab_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTab.SelectedIndexChanged
    112. Try
    113. con.Open()
    114. cmd.CommandText = "select * from english:Tabelle" & " where deutsch = " & pnummer(lstTab.SelectedIndex)
    115. reader = cmd.ExecuteReader()
    116. reader.Read()
    117. txtName.Text = reader("deutsch")
    118. txtVorname.Text = reader("englisch")
    119. reader.Close()
    120. Catch ex As Exception
    121. End Try
    122. con.Close()
    123. End Sub
    124. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    125. If Not IO.File.Exists("C:\language_english.mdb") Then
    126. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    127. Exit Sub
    128. End If
    129. lstTab.Visible = True
    130. PictureBox1.Visible = False
    131. End Sub
    132. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    133. If Not IO.File.Exists("C:\language_english.mdb") Then
    134. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    135. Exit Sub
    136. End If
    137. lstTab.Visible = False
    138. PictureBox1.Visible = True
    139. End Sub
    140. End Class


    Mein Problem ist, dass zwar die Textboxen geleert werden, der Eintrag aber nicht in die Datenbank eingefügt wird.

    Könnt ihr mir einen Tipp geben?

    * Topic verschoben *

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

    Uff, das nächste mal solltest du alles weglassen bis auf die Method die das Problem verursacht.
    ich geh mal von aus, dass du die hier meinst.

    Und das richtige Subforum wählen :). Lieber Mod schieb das mal ins Datenbankforum

    VB.NET-Quellcode

    1. Private Sub cmdEinfügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEinfügen.Click
    2. If Not IO.File.Exists("C:\language_english.mdb") Then
    3. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    4. Exit Sub
    5. End If
    6. Dim anzahl As Integer
    7. Try
    8. con.Open()
    9. cmd.CommandText =
    10. "insert into english:Tabelle " & "(deutsch, englisch) values ('" & txtName.Text & "', '" & txtVorname.Text & "')"
    11. anzahl = cmd.ExecuteNonQuery()
    12. If anzahl > 0 Then
    13. MessageBox.Show("Die Datenbank wurde aktualisiert!")
    14. End If
    15. Catch ex As Exception
    16. End Try
    17. con.Close()
    18. AlleSehen()
    19. End Sub


    Versuch mal mit ner MessageBox die ex.Message anzuzeigen, die wird dir eventuell sagen was falsch läuft.
    Dafür hast du es ja schließlich in nem Try Catch.
    Außerdem solltest Du das hier nicht immer wieder verwenden:

    Quellcode

    1. If Not IO.File.Exists("C:\language_english.mdb") Then
    2. MsgBox("Die Datenbank muss sich auf dem Laufwerk C befinden, damit das Programm ordnungsgemäß ausgeführt werden kann.", MsgBoxStyle.Information)
    3. Exit Sub
    4. End If


    Sobald Du Solche Sachen an mehreren Stellen brauchst, mach eine Methode draus und ruf diese auf.
    Stell dir vor, Du willst an dem Code etwas ändern, dann musst Du das überall machen. Und bei größeren Projekten vergisst man dann schon Mal ein par Stellen.
    Bei einer Methode hättest Du den Code nur an einer Stelle, und würdest ihn auch nur dort ändern.

    Außerdem ist es normalerweise unnötig bei fast jeder Aktion zu prüfen, ob die Datei da ist. Beim Laden des ersten Formulars z.B. würde es reichen. Wenn Du deine Anwendung ein Mal gestartet hast, und die Datei ist während des Starts da, wird sie in der Regel bis zum Beenden nicht mehr wegkommen.