Connection-Strings testen


DrMueller

Erfahrenes Mitglied
Hallo Leute,

evtl. kann mir wer helfen. Vorausgehend muss ich sagen, dass ich leider kein grosser Spezialist bin, wenn es um Connections geht.
Die Ausgangslage ist folgende: Ich soll ein Tool entwickeln, wo ein Benutzer verschiedene Connection-Strings eingeben kann und getestet werden soll, ob diese klappen. Dies wird mit .net4 entwickelt.
Die Connectionstrings können entweder direkt als ConnectionString eingefügt werden oder die einzelnen Daten wie DB, User, Passewort, Treiber etc.
Nun sollte das ganze auch mit den entsprechenden Treibern ODBC, OLEDB und Native getestet werden. Und hier fangen meine Probleme an: Wenn ich das richtig sehe, sind OleDB und ODBC standardisierte Schnittstellen für den Zugriff auf Datenbanken. Hier, so denke ich, kann ich einfach die klassen ODBCConnection und OleDBConnection mit dem entsprechenden ConnectionStringBuilder verwenden. Das sollte ja schon reichen, um zu prüfen, ob die Verbindung klappt oder nicht.

Meine grosse Frage ist, wie macht man so was mit Native Clients? Leider kann ich mir nichts unter solchen vorstellen. Mir wurde erklärt, dass dies die direkte Verbindung zur Datenbank darstellt, daher es andere Werte als die Standard-Anbindungen benötigt.

Aber wie testet man denn so was? Wenn ich das richtig sehe, kann ja dann auch der ConnectionString komplett anders aussehen als ein standardmässiger.


Ich bedanke mich im Voraus für alle Antworten. Ich muss mich zukünftig sicher einmal genauer mit dem Thema beschäftigen, sobald ich Zeit dazu habe...


Matthias Matthias
 

DrMueller

Erfahrenes Mitglied
Leider nicht ganz, die Seite ist sogar mir bekannt. Die Frage ist, wie teste ich dynamisch einen Native-Connectionstring per .Net4 resp. kann ich sämtliche OleDB und ODBC-Connectionstrings mit den angegegebenen Klassen testen.
Evtl. wäre das Thema im .Net Bereich besser aufgehoben? Magst Du das evtl. rüber verschieben?
 

DrMueller

Erfahrenes Mitglied
So mal bisschen was gebastelt.
Im Grund mache ich nur folgenden Aufruf:

Code:
   public void TestMe()
        {
            ActualTestState = TestState.Processing;
            TestResult = String.Empty;
            DbConnection con = MapDbConnection();
            try
            {
                con.ConnectionString = MapConnectionString();
                con.Open();
                ActualTestState = TestState.Succeeded;
            }
            catch (Exception ex)
            {
                TestResult = ex.Message;
                ActualTestState = TestState.Error;
            }
            finally
            {
                con.Dispose();
            }           
        }

        private string MapConnectionString()
        {
            string result = ConnectionString;
            if (string.IsNullOrEmpty(result))
            {

            }
            return result;
        }

        private DbConnection MapDbConnection()
        {
            switch (SourceType)
            {
                case DatabaseConnectionTool.SourceType.Native:
                    {
                        if (DatabaseType.ToLower() == "oracle")
                            return new Devart.Data.Oracle.OracleConnection();
                        else
                            return new System.Data.SqlClient.SqlConnection();
                        break;
                    }
                case DatabaseConnectionTool.SourceType.Odbc:
                    return new System.Data.Odbc.OdbcConnection();
                case DatabaseConnectionTool.SourceType.Ole:
                    return new System.Data.OleDb.OleDbConnection();
            }
            return null;
        }


Da der Microsoft-eigene Oracle-Treiber schon als obsolete markiert ist und nicht mehr unterstützt wird, nehmen wir den von DevArt.
Derzeit muss der Connectionstring direkt vom User eingegeben werden.

Daher:
ODBC --> System.Data.ODBC
OleDB --> System.Data.OleDB
Native SQL --> System.Data.SqlClient
Native Oracle --> Devart...

Keine Ahnung ob das so hinhaut.
 

Neue Beiträge