运行时更改数据库连接

时间:2014-05-15 19:29:48

标签: c# db2 odbc

鉴于

我有以下情况:在我的应用程序的运行时期间,我必须能够将数据库连接从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();
    }

我在odbcCon.Open()期间收到错误;这告诉我我的数据库格式错误,因为他认为MY-DNS是数据库的名称,而不是DSN。

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

一些想法?

1 个答案:

答案 0 :(得分:0)

如果你使用“使用”语句,你会得到相同的“阻止”。

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

        using (DB2Connection db2Con = new DB2Connection(db2ConnectionString))
        {
            db2Con.Open();
            db2Con.Close();
        }

        using (OdbcConnection odbcCon = new OdbcConnection(odbcConnectionString))
        {
            odbcCon.Open();
            odbcCon.Close();
        }
    }