Schnelle DB-Einträge führen zu "No current query in data reader"

  • VB.NET

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

    Schnelle DB-Einträge führen zu "No current query in data reader"

    Hallo zusammen,

    ich möchte ein kleines Messaging System schreiben und habe festgestellt, dass wenn ich Spame, dass dann folgende Meldung erscheint "No current query in data reader". Und das Programm stürzt ab.
    Kann ich das irgendwie unterbinden?

    Senden:

    VB.NET-Quellcode

    1. Try
    2. conn.Close()
    3. conn.Open() ' Verbindung öffnen
    4. Catch myerror As MySqlException
    5. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
    6. End Try
    7. myCommand.Connection = conn
    8. myCommand.CommandText = "INSERT INTO messages(message_id, user, line, time) VALUES('" & My.Settings.chat_id & "', '" & My.Settings.username_tmp & "', '" & chat_txt.Text & "', '" & Now.ToString("HH:mm:ss") & "')"
    9. myAdapter.SelectCommand = myCommand
    10. myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
    11. conn.Close()
    12. chat_txt.Text = ""
    13. Me.Chatbox.SelectionStart = Me.Chatbox.Text.Length - 1
    14. Me.Chatbox.ScrollToCaret()


    Empfangen:

    VB.NET-Quellcode

    1. Me.Invoke(Sub() Me.Chatbox.Clear())
    2. Try
    3. conn.Close()
    4. conn.Open() ' Verbindung öffnen
    5. Catch myerror As MySqlException
    6. MsgBox("Keine Verbindung zur Datenbank : " & myerror.Message.ToString) ' Falls Fehler : Fehler anzeigen
    7. End Try
    8. myCommand.Connection = conn
    9. myCommand.CommandText = "SELECT * FROM messages WHERE message_id='" & My.Settings.chat_id & "'"
    10. myAdapter.SelectCommand = myCommand
    11. myData = myCommand.ExecuteReader() ' Hier startet man die SQL Abfrage
    12. While myData.Read
    13. If myData.HasRows Then
    14. Me.Invoke(Sub() Me.Chatbox.AppendText("[" & myData(4) & "] " & myData(2) & ": " & myData(3) & vbNewLine))
    15. End If
    16. End While
    17. conn.Close()
    18. Me.Invoke(Sub() Me.Chatbox.SelectionStart = Me.Chatbox.Text.Length - 1)
    19. Me.Invoke(Sub() Me.Chatbox.ScrollToCaret())


    Das Empfangen, läuft über einen BG Worker, der von einem Timer in 2 Sek. Takt angestupst wird.