Informix连接字符串字段描述和要使用的值

问题描述 投票:0回答:1

我正在使用.netc#编写测试应用程序以连接到IBM的Informix数据库。

到目前为止我所做的是,我在我的机器上安装了Informix client sdk v4.10。之后我写了一段代码来自herehere。在我的代码中,我引用了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信息的屏幕下方!

enter image description here

如果有人能帮助我,那将是非常有帮助的。

c# .net odbc informix
1个回答
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

最后两行是文件的内容。

  • 第1列是INFORMIXSERVER的名称或别名(setnet32.exe中的IBM Informix Server)
  • 第2列是协议名称(setnet32.exe中的Protocolname)
  • 第3列是主机名(setnet32.exe中的HostName)
  • 第4列是端口号或名称(setnet32.exe中的服务名称)

如果第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查询它们,但您可能无法(并且实际上不应该!!)INSERT,UPDATE或删除或使用DDL。

在上面的数据库列表中,所有sys *数据库都是Informix管理“数据库”。数据库名称在我的示例中以“databasename @ informixservername”格式显示。

您现在应该拥有访问数据库所需的所有信息。

© www.soinside.com 2019 - 2024. All rights reserved.