从代码更改/创建ODBC连接

时间:2010-12-23 10:19:07

标签: .net database odbc informix

我正在通过ODBC连接从C#ASP .Net 4.0反对Informix数据库。此数据库确实经常更改,因此我读出了从sysmaster表安装的数据库。

根据用户的选择,我需要设置与所选数据库的ODBC连接,或者更改当前连接以从系统管理员DB更改为选择的连接。

任何人都知道如何做到这一点?我怀疑必须可以设置临时ODBC连接。同样在我的ODBC连接属性下的Visual Studio中,我有一个如下所示的连接字符串:

Dsn=Informix;uid=xxxxx;database=sysmaster;host=10.10.10.10;srvr=testdb1;serv=3000;pro=onsoctcp;cloc=en_US.819;dloc=en_US.819;vmb=0;curb=0;scur=0;icur=0;oac=1;optofc=0;rkc=0;odtyp=0;ddfp=0;dnl=0;rcwc=0

我已经四处寻找一个没有ODBC直接连接的库到informix,但现在已经成功了。

谢谢, 斯蒂芬

2 个答案:

答案 0 :(得分:3)

我找到了一个非常好的工作解决方案。我没有意识到.NET完全支持从后面的代码执行此操作而不实际修改ODBC设置。

    const string sConnString = "Driver=Informix;uid=user;pwd=password;database=x10stg01_1312;host=10.10.10.10;srvr=testdb1;serv=3000;pro=onsoctcp;cloc=en_US.819;dloc=en_US.819;vmb=0;curb=0;scur=0;icur=0;oac=1;optofc=0;rkc=0;odtyp=0;ddfp=0;dnl=0;rcwc=0";
    var oOdbcConnection = new System.Data.Odbc.OdbcConnection(sConnString);

    string queryString =
        "SELECT * FROM tevoc WHERE ev_oc_id=6599098";
    OdbcCommand command = new OdbcCommand(queryString);

    command.Connection = oOdbcConnection;
    oOdbcConnection.Open();
    OdbcDataReader odbcDataReader = command.ExecuteReader();

    while (odbcDataReader.Read())
    {
        CheckDiv.InnerHtml += "Result: " + odbcDataReader.GetString(6) + "<br/>";
    }

我猜你必须在尝试后面的代码之前设置一个有效的ODBC连接,以确保驱动程序可以正常或至少查看可用的ODBC驱动程序列表。

答案 1 :(得分:2)

我想你可以直接搞乱注册表,但你也可以调用odbcconf.exe,这是一个标准的Windows实用程序。这是一个MSDN link

当我研究如何操作ODBC连接时,我做了类似以下的操作来添加连接:

odbcconf.exe /a {CONFIGSYSDSN "SQL Server" "DSN=?|Description=?|SERVER=?(local)|Trusted_Connection=no|Database=?"}

当然,您可以使用自己的参数替换?