Nachrichten System mit MySQL

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von timmi31061.

    Nachrichten System mit MySQL

    Hi Leute,

    Ich habe leider ein kleines Problem mit meinem Programm, und zwar möchte ich ein Nachrichtensystem einbauen, dazu benutze ich die MySQL Lib3. Nur wenn ich die Nachrichten auslesen möchte werden anstatt mehrere nur eine Nachricht geladen.

    Das ist bissher mein Code:

    VB.NET-Quellcode

    1. Try
    2. db.Encoding = Encoding.GetEncoding("ISO-8859-1")
    3. Dim next1 As Boolean = False
    4. Dim result As New RichTextBox
    5. Dim er As Boolean = False
    6. Dim anzahl As Long = 0
    7. anzahl = 0
    8. Dim rc As MySqlLib.ResultCollection = db.Query("SELECT * FROM `Nachrichten` WHERE `Empfänger`='" & Login.Benutzername.Text & "' AND `Gelesen`='0'")
    9. If rc.Row.Count > 0 Then
    10. For Each kp As Generic.KeyValuePair(Of String, String) In rc.Row(0).Columns
    11. result.Text &= kp.Key & "=" & kp.Value & vbNewLine
    12. Next
    13. Msg.ListBox1.Items.Clear()
    14. For Each i In result.Lines
    15. If i.StartsWith("Empfänger=") Then
    16. anzahl += 1
    17. End If
    18. If i.StartsWith("Betreff=") Then
    19. Dim Betreff As String = i.Split("=")(1)
    20. Msg.ListBox1.Items.Add(Betreff)
    21. End If
    22. Next
    23. End If
    24. If anzahl = 0 Then
    25. ButtonX1.Text = "Nachrichten"
    26. Else
    27. ButtonX1.Text = "<b>Nachrichten (" & anzahl.ToString & ")</b>"
    28. End If
    29. Catch scriptEx As MySqlLib.ScriptException
    30. MessageBox.Show(scriptEx.Message, "Script Fehler")
    31. Catch mysqlEx As MySqlLib.MySqlException
    32. MessageBox.Show(mysqlEx.ToShortString(), "MySql Fehler")
    33. Catch ex As Exception
    34. MessageBox.Show(ex.Message, "Allgemeiner Fehler")
    35. End Try


    Obwohl auf dem Server bei Empfänger 2x der selbe steht wird mir nur die 1. Nachricht anezeigt
    @Max_Engl
    Hi, setzt hier mal einen Haltepunkt. (Vorher in die Zeile gehen und F9 drücken, dann debuggen)

    VB.NET-Quellcode

    1. If rc.Row.Count > 0 Then
    2. For Each kp As Generic.KeyValuePair(Of String, String) In rc.Row(0).Columns
    3. result.Text &= kp.Key & "=" & kp.Value & vbNewLine
    4. Next

    Das sieht mir hier so aus als ob du nur rc.row(0), also die erste Zeile des Ausgelesenens behandelst.
    Guck dir vor der ForEach-Schleife mal das Count der Rows an.
    Wenn ich es aber so umsetzte kommt immer noch eine Nachricht
    oder mache ich etwas falsch?

    VB.NET-Quellcode

    1. Dim next1 As Boolean = False
    2. Dim result As New RichTextBox
    3. Dim er As Boolean = False
    4. Dim anzahl As Long = 0
    5. Dim tgg As Integer = 0
    6. anzahl = 0
    7. Dim rc As MySqlLib.ResultCollection = db.Query("SELECT * FROM `Nachrichten` WHERE `Empfänger`='" & Login.Benutzername.Text & "' AND `Gelesen`='0'")
    8. If rc.Row.Count > 0 Then
    9. For Each kp As Generic.KeyValuePair(Of String, String) In rc.Row(tgg).Columns
    10. result.Text &= kp.Key & "=" & kp.Value & vbNewLine
    11. tgg += 1
    12. Next
    Guck dir mal diesen Beitrag an [Beta] MySqlLib 3
    Er macht einfach eine ForEach durch die Results.
    Also probier mal:

    VB.NET-Quellcode

    1. Dim rc As MySqlLib.ResultCollection = db.Query("SELECT * FROM `Nachrichten` WHERE `Empfänger`='" & Login.Benutzername.Text & "' AND `Gelesen`='0'")
    2. If rc.Row.Count > 0 Then
    3. For Each oItem As ResultItem In rc
    4. 'Drück hier F9, debugge und schau dir oItem an, indem du mit dem Cursor drüber gehst.
    5. Next

    VB.NET-Quellcode

    1. For Each kp As Generic.KeyValuePair(Of String, String) In rc.Row(0).Columns


    Du liest mit rc.Row(0).Columns nur aus der ersten Zeile die Spalten.

    Ich kenne ja die Lib nicht, aber ich würde mal das vermuten:

    VB.NET-Quellcode

    1. For Each r As Row In rc.Rows
    2. For Each kp As Generic.KeyValuePair(Of String, String) In r.Columns
    3. Next
    4. Next
    Mit freundlichen Grüßen,
    Thunderbolt

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