我正在通过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,但现在已经成功了。
谢谢, 斯蒂芬
答案 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=?"}
当然,您可以使用自己的参数替换?
。