Informix for .NET 的连接字符串

Posted

技术标签:

【中文标题】Informix for .NET 的连接字符串【英文标题】:Connection string for Informix for .NET 【发布时间】:2009-03-04 16:28:21 【问题描述】:

我们正在使用 Informix 数据库,并且正在使用 ODBC 从 .NET 成功连接到它。我们使用的连接字符串是;

DRIVER=IBM INFORMIX ODBC RIVER;
UID=username; PWD=password;
DATABASE=our_database;
HOST=devsrv01;
SERVER=devsrv01_tcp;
SERVICE=ids9tcp2;
PROTOCOL=onsoctcp;
CLIENT_LOCALE=en_US.CP1252;
DB_LOCALE=en_US.819;

我们想从 ODBC 改变并使用 IBM 的 SDK 和库作为outlined on their site。

我们使用的代码是;

string ConnectionString = "Database=our_database; Server=172.22.0.0:1528; UID=username; Password=password; ";

try
                               
    IfxConnection conn = new IfxConnection(ConnectionString);
    conn.Open();

catch (IfxException ex)

conn.Open() 抛出异常;

ERROR [08001] [IBM] SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“172.22.0.0”。检测错误的通信功能:“recv”。协议特定错误代码:“”、“”、“0”。 SQLSTATE=08001

“啊哈!”你说。只需输入“PROTOCOL=onsoctcp;”,但这会使IfxConnection(ConnectionString); 命令抛出ArgumentException。如果连接字符串包含任何无效的<field>=<value> 设置,则会引发此异常。如果我放入垃圾=垃圾;它会抛出相同的 ArgumentException,这让我认为它无法识别协议(或 PRO)字段。

(仅供参考)172.22.0.0 是 devsrv01 的 IP,并且不以 0.0 结尾。

【问题讨论】:

【参考方案1】:

我最终发现答案是包含;

Persist Security Info=True;Authentication=Server;

别问我为什么。我只是让它工作。

为所有人+1 - 感谢您的帮助。

【讨论】:

【参考方案2】:

你检查http://www.connectionstrings.com/了吗?它可能会提供一些见解。

【讨论】:

我尝试的第一件事。它还说要使用“Protocol=onsoctcp;”【参考方案3】:

假设您想使用 .NET、Informix CSDK(不是 DRDA 之一)和 ADO.NET,最简单的连接方式是使用将数据库添加到 Visual Studio 的数据连接列表(查看 -> 服务器资源管理器,然后单击“连接到数据库”按钮,然后只需填写表格(假设您安装了带有 CSDK 的 Visual Studio 扩展...)。

然后进入项目的属性,进入设置选项卡,添加一个类型为“(连接字符串)”的新设置,并将值设置为:

 Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"

所以在 app.config 中它看起来像这样:

 <add name="MyApplication.Properties.Settings.MyConnectionString"
  connectionString="Database=mydatabase;Password=mypassword;Server=myserver;User ID=myuser"
  providerName="IBM.Data.Informix" />

还要确保已在主机文件 (C:\Windows\System32\drivers\etc\hosts) 和/或使用位于“开始”菜单中的 Informix 数据库连接工具“inetd32.exe”配置数据库和服务器某处……

此外,如果您愿意,您可以将表等从服务器资源管理器窗口中的数据库拖到 Visual Studio 中打开的 XSD 文件中,让它自动将连接字符串添加到配置并设置所有内容,以便为您提供键入数据集,它将为您处理 CRUD 层...(尽管您可能会遇到一堆错误,因为 VS 由于某种原因无法使用最新的驱动程序提取 Informix 架构...)

无论如何,您可以使用如下连接字符串:

IfxConnection myconnection = new IfxConnection(MyApplication.Properties.Settings.Default.MyConnectionString);

【讨论】:

好主意。到目前为止,我得到了这个 WTF; ianquigley.com/A9_Create_a_new_IBM_database.html 我没有使用 Visual Studio 扩展来创建数据库...只是连接到现有的数据库。虽然我对 IBM 的一些开发人员的坏话没有很好的看法。【参考方案4】:

IBM Informix .NET Povider Guide 4.10 手册使用协议或 PRO 而不是 PROTOCOL。关键字是否区分大小写?符号表明它可能是,但我对 .NET 的了解还不够,无法确定。并且您在使用 PROTOCOL 时遇到的错误表明它可能区分大小写。

【讨论】:

感谢您的想法。明天试试。如果有效,请注意大喊大叫。

以上是关于Informix for .NET 的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用连接字符串连接到 odbc

C#中如何设置字符串连接到MySQL数据库?

为啥在字符串连接上使用 os.path.join?

播放 wav 文件,将字符串连接到调用文件

在 informix 触发器中传递连接的字符串参数

Spark - 将每个分区的字符串连接到单个字符串