C# 在运行时更改数据库连接

C# 在运行时更改数据库连接,c#,db2,odbc,C#,Db2,Odbc,给定的 我有以下情况:在应用程序运行期间,我必须能够将数据库连接从ODBC连接切换到DB2连接,反之亦然 问题 我所有的方法都很有效。如果我建立到ODBC的连接,它就会工作。如果我建立了到Db2的连接,它就可以正常工作。但是如果我尝试连接到Db2,然后连接到ODBC驱动程序,我会得到一个错误,告诉我他找不到正确的数据库 示例: 如果我尝试这样做: public void HelpMeTest() { string odbcConnectionString = string.For

给定的

我有以下情况:在应用程序运行期间,我必须能够将数据库连接从ODBC连接切换到DB2连接,反之亦然

问题

我所有的方法都很有效。如果我建立到ODBC的连接,它就会工作。如果我建立了到Db2的连接,它就可以正常工作。但是如果我尝试连接到Db2,然后连接到ODBC驱动程序,我会得到一个错误,告诉我他找不到正确的数据库

示例:

如果我尝试这样做:

public void HelpMeTest() {
        string odbcConnectionString = string.Format("DSN={0};UID={1};PWD={2};", "MY-DNS", "myUser", "pwd");
        string db2ConnectionString = "Database=myDataBase;";

        OdbcConnection odbcCon = new OdbcConnection(odbcConnectionString);
        odbcCon.Open();
        odbcCon.Close();

        DB2Connection db2Con = new DB2Connection(db2ConnectionString);
        db2Con.Open();
        db2Con.Close();

    }
public void HelpMeTest() {
        string odbcConnectionString = string.Format("DSN={0};UID={1};PWD={2};", "MY-DNS", "myUser", "pwd");
        string db2ConnectionString = "Database=myDataBase;";

        DB2Connection db2Con = new DB2Connection(db2ConnectionString);
        db2Con.Open();
        db2Con.Close();

        OdbcConnection odbcCon = new OdbcConnection(odbcConnectionString);
        odbcCon.Open();
        odbcCon.Close();
    }
它很好用。但如果我尝试这样做:

public void HelpMeTest() {
        string odbcConnectionString = string.Format("DSN={0};UID={1};PWD={2};", "MY-DNS", "myUser", "pwd");
        string db2ConnectionString = "Database=myDataBase;";

        OdbcConnection odbcCon = new OdbcConnection(odbcConnectionString);
        odbcCon.Open();
        odbcCon.Close();

        DB2Connection db2Con = new DB2Connection(db2ConnectionString);
        db2Con.Open();
        db2Con.Close();

    }
public void HelpMeTest() {
        string odbcConnectionString = string.Format("DSN={0};UID={1};PWD={2};", "MY-DNS", "myUser", "pwd");
        string db2ConnectionString = "Database=myDataBase;";

        DB2Connection db2Con = new DB2Connection(db2ConnectionString);
        db2Con.Open();
        db2Con.Close();

        OdbcConnection odbcCon = new OdbcConnection(odbcConnectionString);
        odbcCon.Open();
        odbcCon.Close();
    }
我在odbcCon.Open()期间出错;这告诉我我的数据库格式错误,因为他认为my-DNS是数据库的名称,而不是DSN

ERROR [HY501] [IBM][CLI Driver] SQL1001N  "MY-DNS" is not a valid database name.  SQLSTATE=2E000
一些想法?

如果你使用“使用”语句,你会得到同样的“阻塞”吗


尝试检查
odbcCon.Driver
属性在每种情况下包含的内容。我怀疑在第二个示例中,OdbcConnection将委托给在此时已加载的IBM CLI驱动程序。