ConnectionString-Eigenschaft wurde nicht initialisiert

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Fonsi.

    ConnectionString-Eigenschaft wurde nicht initialisiert

    Hallo zusammen

    ich habe mir aus dem Galileo-Buch, "Einstieg in Visual Basic 2010, das Beispiel zu Dantenbank-Anwendungen mit ADO.NET angesehen und mir aufgrund dieses Beispiels eine Access 2010-Datenbank angelegt. Wenn ich nun das Formular öffne, erhalte ich (nur manchmal) folgdende Fehlermeldung: "Die ConnectionString-Eigenschaft wurde nicht initialisiert". Danach funktioniert aber alles einwandfrei (alle Daten werden angeigt, erfassen neuer Daten funktioniert auch).

    Hat das irgendetwas mit dem Inhalt der zugrundeliegenden Tabelle der Datenbank zu tun? Wie kann ich diesen Fehler ausschalten?

    Hier der Code vom Form:

    Quellcode

    1. Imports System.Data.OleDb
    2. Dim con As New OleDbConnection
    3. Dim cmd As New OleDbCommand
    4. Dim reader As OleDbDataReader
    5. Dim pnummer As New ArrayList
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=|DataDirectory|\proj.accdb"
    8. cmd.Connection = con
    9. End Sub
    10. Private Sub AlleSehen()
    11. Dim krit As String = GeraetComboBox.Text
    12. Try
    13. con.Open()
    14. cmd.CommandText = "select * from geraete where geraet like '" & krit & "'"
    15. Ausgabe()
    16. Catch ex As ExceptionMessageBox.Show(ex.Message)
    17. End Try
    18. con.Close()
    19. End Sub
    20. Private Sub Ausgabe()
    21. reader = cmd.ExecuteReader()
    22. ZustTextBox.Clear()
    23. pnummer.Clear()Do While reader.Read()
    24. ZustTextBox.Text = (reader("zustaendig"))
    25. Loop
    26. reader.Close()
    27. End Sub
    28. Private Sub GeraetComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GeraetComboBox.SelectedIndexChanged
    29. AlleSehen()
    30. End Sub
    Da ich deine Datenbank nicht besitze kann ich den Code auch nicht testen.
    Aber das kannst du ja auch selbst machen.
    Was ich nicht verstehe:
    Nach dem Fehler läuft es dennoch richtig?!
    Wird der Fehler von der ExceptionMessageBox gebracht oder an
    einer anderen Stelle?
    Musst halt mal im Einzelstepmodus durch
    das Programm gehen und schauen ob die Variablen richtig
    gefüllt sind
    Hallo Lightsource

    ja, nach dem Fehler läuft alles richtig. Ich erhlaten lediglich die Meldung "Die ConnectionString-Eigenschaft wurde nicht initialisiert", hernach funzt aber alles wie es soll. Wie gesagt tritt der Feheler auch nicht immer auf. Leider kann ich kein Muster erkennen. Und wie könnte es anders sein, wenn ich jetzt im Einzelschrittmodus teste tritt der Fehler wieder nicht auf.
    der Fehler ist nun wieder aufgetreten und gibt im Direktfenster folgendes aus:

    Eine Ausnahme (erste Chance) des Typs "System.InvalidOperationException" ist in System.Data.dll aufgetreten.

    Es läuft aber hernach wie gesagt alles fehlerfrei. Kann mir jemand sagen, was die Ursache ist?
    Es läuft aber hernach wie gesagt alles fehlerfrei. Kann mir jemand sagen, was die Ursache ist?
    Nein, ich kann es nicht. Es wird dir nichts übrig bleiben als alle Register des Debuggens zu ziehen.
    VB 2008 hat da ja etliche Möglichkeiten.

    Zuerst würde ich mal den Status der Verbindung vor dem Öffnen und Schließen überprüfen.
    con.status
    Falls die Verbindung offen ist ,nicht nochmals öffnen und falls sie geschlossen ist, nicht nochmal schließen.

    Da der Fehler sehr sporadisch auftitt, würde ich vor entscheidenden Stellen im Programm
    diverse Daten in ein Logfile schreiben. Oder zumindest über debug.print anzeigen lassen

    Sobald der Fehler auftritt bleibt doch das Programm stehen. Dann kannst du doch schauen, ob
    der String richtig gefüllt ist, indem du mit der Maus über die Variable fährst.

    Den Rest des Programmes kenne ich ja auch nicht. Nicht dass du irgendwo deinen ConnectionString
    wieder zerstörst, weil du die Verbindung verwirfst.
    Hallo Lightsource

    danke für deine Imputs. Nein, den ConnectionSting zerstöre ich nirgens. Werde mal Schritt für Schritt testen. Und nein, das Programm bleibt eben nicht stehen. Die genannte Fehlermeldung wird ausgegeben und dann läuft alles weiter, ohne Fehler...
    Den Connectionstring braucht man doch nur beim Verbinden mit der Datenbank. In deinem Fall also im FormLoad-Ereignis. Dass der Fehler "zwischendurch" auftritt, wundert mich jetzt. Hol dir beim Debuggen mal das Fenster "Überwachen" hinzu und schreibt dir dort deine im FormLoad-Ereignis initialisierten Variablen rein.