The connection was not closed. The connection's current state is open ----> Problem

  • VB.NET

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

    The connection was not closed. The connection's current state is open ----> Problem

    Hi,

    (absoluter Anfänger wenns um SQL geht)

    ich versuche schon seit einer Woche bestimmte Daten aus einer Datenbank, die mit Microsoft Access 2013 erstellt wurde, abzufragen, doch ich bekomme immerwieder einen Fehler.

    Ich möchte mithilfe eines Namens einen weiteren Wert aus der Datenbank abrufen und in einer Textbox anzeigen. Die Tabelle heißt "user" und das Feld(Spalte) "username" es soll der Wert in der Spalte "Wert1" in die textbox geschrieben warden(Wenn das zu ungenau ist, bitte bescheitsagen).

    erstmal der Code:

    VB.NET-Quellcode

    1. Imports System.Data.OleDb
    2. Public Class Login
    3. Private Sub cmd_signin_Click(sender As Object, e As EventArgs) Handles cmd_signin.Click
    4. con.ConnectionString ="Provider=Microsoft.ACE.OLEDB.12.0;" &
    5. "Data Source=D:\Database.accdb;"
    6. Try
    7. con.Open()
    8. cmd.CommandText ="select * from user where" &
    9. " username like '%" & txt_Username.Text & "%'"
    10. ' MessageBox.Show(cmd.CommandText)
    11. Ausgabe()
    12. con.Close()
    13. Catch ex As ExceptionMessageBox.Show(ex.Message)
    14. End Try
    15. con.Close()
    16. End Sub
    17. Private Sub Ausgabe()
    18. con.Open()
    19. reader = cmd.ExecuteReader()
    20. Do While reader.Read()
    21. txt_Wert1.Text = reader("Wert1")
    22. Loop
    23. con.Close()
    24. reader.Close()
    25. End Sub
    26. End Class


    Wenn ich alles mit Einzellschritten debuggen lasse, springt VS immer bei "reader = cmd.ExecuteReader()" in die "Catch ex as exception" und über die MSGBox erscheint die Fehlermeldung "The connection was not closed. The connection's current state is open.". Ok, aber wieso? Wieso kommt der Fehler schon/überhaubt bei "reader = cmd.ExecuteReader()"?



    Danke schonmal im Vorraus!

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

    aber du siehst schon, dass du die Connection 2 mal öffnest, oder? warum das aber bei ExecuteReader auftritt weißich auch nicht.

    Aber auch du:

    "Ich wiederhole mich" schrieb:

    gugge auchma "Datenbank in 10 Minuten" auf Movie-Tuts, wie Ado.Net wriklich gedacht ist, weil man schreibt nicht für jeden Pups derlei hundert Zeilen Code.

    gugge v.a. Datenbänkerei-Einstieg, weil ohne die Vorraussetzungen von Databinding zu kennen kann man inne Datenbänkerei nur FacePalm-Code produzieren.
    @deadly,
    habe deinen Code copiert.

    Dein Code fängt an mit "Public Class Login"
    Es gibt aber kein Übergabe für cmd und Con, sprich wo hast du die deklariert?

    Ganz sicher, dass der Error erst in "reader = cmd.ExecuteReader() " auftritt?

    Um deinen Beispiel nahzukommen, sind bei mir die beiden Objeckte(cmd, con) im Kopf deklariert.
    Der Error tritt dann da auf, wie erwartet, beim erneutem Aufruf von con.open, in der Proz "Ausgabe"

    Unabhängig davon:
    Du schliesst con in deinem Code erst nach Aufruf von "Ausgabe", deshalb muss es in "Ausgabe" zu einem Errro kommen.

    Con.close wird bei dir zweimal aufgerufen.
    Setz nach catch ein finaly und darin con.close