我正在使用.net
在c#
中编写一个测试应用程序,以连接到IBM的Informix数据库。
到目前为止,我所做的是,我在自己的计算机上安装了Informix client sdk v4.10
。之后,我写了一段代码,引用了here和here。在我的代码中,我引用了IBM.Data.Informix.dll
,该引用是从Informix client sdk's
bin文件夹netf40
的安装路径引用的。
运行测试应用程序时,尝试打开连接时遇到错误,
错误[HY000] [Informix .NET提供程序] [Informix]发生系统错误 在网络功能中。
我认为此错误是由于未正确提供连接字符串字段引起的,我引用了https://www.connectionstrings.com/informix/,并尝试使用上述链接中提到的informix with ODBC driver and informix .net provider
之类的连接字符串,但是没有用,我也很难了解从何处获取每个连接字符串字段(例如protocol, port, host-name , server-name and service name.
要查找上述字段的值,很遗憾,我尝试在HKEY_LOCAL_MACHINE\SOFTWARE\INFORMIX\
下的注册表项中查找SQLHOSTS项!并且还尝试从客户端sdk的bin文件夹中运行setnet32.exe
,我只能在屏幕下方看到protocol
信息!
如果有人可以帮助我,那将真的很有帮助。
答案 0 :(得分:1)
这是一个非常非常困难的问题,无法盲目回答。 :-)
setnet32.exe将不知道您要查找的信息,您需要将此信息提供给setnet32.exe。
第一个要问的问题是:您的数据库是否在Unix或Linux上运行?如果是这样,则以“ informix”用户身份登录数据库服务器并运行命令
cat $INFORMIXDIR/etc/sqlhosts
如果您使用的是Windows,则登录Windows服务器并在命令提示符下运行
TYPE %INFORMIXDIR%\etc\sqlhosts
这应该会为您提供一个可能包含大量信息的文件,您正在查找的行不是注释,并且至少有4列。这是我正在测试的Docker上的sqlhosts文件:
$ cat $INFORMIXDIR/etc/sqlhosts
############################################################
### DO NOT MODIFY THIS COMMENT SECTION
### HOST NAME = 7edf3045c382
############################################################
informix onsoctcp 7edf3045c382 9088
informix_dr drsoctcp 7edf3045c382 9089
最后两行是文件的内容。
如果第4列是名称,并且您使用的是Unix或Linux,请在Unix或Linux服务器上的/ etc / services中搜索端口名称。如果您使用的是Windows,则它将位于%windir%\ system32 \ drivers \ etc \ services(或类似文件)中。
一旦有了,就可以运行命令
dbaccess
选择“数据库”选项,然后是“选择”选项。这应该为您显示一个数据库列表,大致类似于:
SELECT DATABASE >>
Select a database with the Arrow Keys, or enter a name, then press Return.
------------------------------------------------ Press CTRL-W for Help --------
backbone@informix wallet@informix
cust@informix
retail@informix
sports@informix
sysadmin@informix
sysha@informix
sysmaster@informix
sysuser@informix
sysutils@informix
通常,名为“ sys”的数据库是为Informix管理保留的,并且可能不是实际的数据库,尽管您可以使用SELECT查询它们,但是您可能将(实际上不应!)插入。 ,UPDATE或DELETE或使用DDL。
在上面的数据库列表中,所有sys *数据库都是Informix管理“数据库”。在我的示例中,数据库名称以“ databasename @ informixservername”格式显示。
您现在应该拥有访问数据库所需的所有信息。