繁体   English   中英

在运行时更改数据库连接

[英]change database connection during runtime

给定

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

有什么想法吗?

如果使用“ using”语句,是否得到相同的“ blocking”。

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();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM