Wie erhalte ich aus einer ODBC-Verbindung mit festem DSN den Datenbank-Namen?

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Wie erhalte ich aus einer ODBC-Verbindung mit festem DSN den Datenbank-Namen?

    Für die weitere Arbeit brauche ich den Namen der Datenbank.
    Es existiert ein fester Benutzer-DSN (Benutzer- oder System-DSN)
    Aus diesem DSN will ich den Datenbank-Namen lesen.
    Beim Anlegen des ODBC gab es keine Probleme.

    Ein ähnlich gelagertes Beispiel habe ich bei

    openbook.galileocomputing.de/e…c36305a587fee65dc83e64cc9

    gefunden.

    Für meine Zwecke angepasst:

    VB.NET-Quellcode

    1. Private Sub btn_connect_Click(...) Handles ...
    2. Try
    3. Dim con As New Odbc.OdbcConnection
    4. con.ConnectionString = "DSN=odbc_firma"
    5. MsgBox(con.Database, , "Database")
    6. con.Close()
    7. Catch ex As Exception
    8. MsgBox(ex.Message, , "Fehler")
    9. End Try
    10. End Sub

    Die Messagebox "Database" ist "" und es gibt keine Fehlermeldung.

    VB.NET-Quellcode

    1. + Me {DSN_Connect.Form1} DSN_Connect.Form1
    2. - con {System.Data.Odbc.OdbcConnection}
    3. ConnectionString "DSN=odbc_firma" String
    4. ConnectionTimeout 15 Integer
    5. Container Nothing System.ComponentModel.IContainer
    6. Database "" String
    7. DataSource "" String
    8. Driver "" String
    9. - ServerVersion {"Ungültige Operation. Die Verbindung ist geschlossen."}
    10. + Data {System.Collections.ListDictionaryInternal}
    11. HelpLink Nothing String
    12. InnerException Nothing System.Exception
    13. ¨Message "Ungültige Operation. Die Verbindung ist geschlossen."[/b]
    14. Source "System.Data" String
    15. StackTrace " bei System.Data.ProviderBase.DbConnectionClosed.get_ServerVersion() bei System.Data.Odbc.OdbcConnection.get_ServerVersion()"
    16. + TargetSite {System.Reflection.RuntimeMethodInfo}
    17. Site Nothing System.ComponentModel.ISite
    18. State Closed {0} System.Data.ConnectionState
    19. + e {X = 61 Y = 15 Button = Left {1048576}} System.EventArgs
    20. + sender {Text = "connect"} Object

    1. Hat jemand eine Idee woran es liegen könnte?
    2. Wieso wird die Fehlermeldung (Message) nicht ausgegeben?

    ConnectString mit DSN, aber ohne UID und PWD?

    Vielen Dank für den Hinweis. Sicher wäre ich selbst drauf gekommen, wenn ich mich nicht so an die Vorlage geklammert hätte und mehr den Kopf eingesetzt hätte.

    Mit

    con.ConnectionString = "DSN=odbc_firma;UID=ich;PWD=123456;"
    con.Open()

    funktioniert es.

    Ohne UID und PWD, so wie im Beispiel angegeben, funktioniert es nicht.

    con.ConnectionString = "DSN=odbc_firma"
    con.Open()

    Ich erhalte den Fehler:

    ERROR [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Fehler bei der Anmeldung für den Benutzer ''.

    Wenn man beim Anlegen des DSN Benutzername und Kennwort eingibt, werden die Daten in der Verbindung gespeichert oder dienen sie nur dem Zugang beim Einrichten?

    Funktioniert dieser Aufruf nur mit Windowsauthentifizierung?

    Ich bin davon ausgegangen, dass mit dem Aufruf "DSN=odbc_firma" alle Informationen (DRIVER, SERVER, DATABASE, UID, PWD), die beim Anlegen der ODBC-Verbindung eingegeben wurden, gespeichert und der Anwendung zur Verfügung stehen. Ist das ein Denkfehler?