对于构建外部应用程序的开发人员,尤其是使用C# 等熟悉技术的开发人员来说,ODBC(开放数据库连接)是连接任何关系数据库(包括 InterSystems IRIS)的重要标准化桥梁。虽然 InterSystems 提供了自己的本地 ADO.NET 提供商,但 ODBC 驱动程序通常是与通用数据库工具和框架集成的最直接途径。
以下是使用 ODBC 驱动程序将 C# 应用程序连接到 IRIS 实例的分步指南,重点是无 DSN 连接字符串。
第 1 步:安装 InterSystems IRIS ODBC 驱动程序
在 Windows 机器上安装 InterSystems IRIS 时,默认会安装 InterSystems ODBC 驱动程序。
- 如果 IRIS 位于同一台计算机上:驱动程序已经存在。
- 如果 IRIS 位于远程服务器上:如果您是客户机,则必须从 WRC 网站下载并安装适用于客户机操作系统(Windows、Linux 或 macOS)和位元(32 位或 64 位)的独立 ODBC 客户机驱动程序包,或者安装客户机组件并复制 ODBC 驱动程序。
安装完成后,可在 Windows 的ODBC 数据源管理员(ODBC Data Source Administrator)工具中验证其是否存在(查找 InterSystems IRIS ODBC35 驱动程序)。
.png)
第 2 步:定义无 DSN 连接字符串
我们不在 Windows 管理员工具中创建预配置的数据源名称 (DSN),而是使用无 DSN 连接字符串。这样更便于部署,因为您的应用程序会携带所有必要的连接详细信息。
该格式指定了驱动程序名称和服务器参数:
Driver={InterSystems IRIS ODBC35};
server=127.0.0.1;
port=1972;
database=USER;
uid=_System
注意
- 驱动程序名称(
InterSystems IRIS ODBC35或有时为InterSystems ODBC)必须与在本地 ODBC 数据源管理员中注册的名称完全一致。 Port是 IRIS Superserver 端口(通常为 1972)。Database是 InterSystems IRIS 中的目标命名空间(Namespace)(如USER或您的自定义应用程序名称空间)。- 默认的
UID是_System,密码是SYS。请务必在生产环境中更改这些默认值。
第 3 步:用 C# 实现连接
在 C# 项目中,您需要引用System.Data.Odbc命名空间,以使用通用 .NET ODBC 提供程序。
下面是一个最简单的 C# 示例,用于建立连接、针对默认表执行简单查询并显示结果。
using System.Data;
using System.Data.Odbc;
public class IrisOdbcExample
{
public static void Main()
{
// 1. Define the DSN-less connection string
string connectionString =
"DRIVER={InterSystems IRIS ODBC35};" +
"Server=127.0.0.1;Port=1972;Database=USER;" +
"UID=_System;PWD=SYS;";
// 2. Define the SQL Query (Example: querying the default Sample.Person table)
string sql = "SELECT ID, Name FROM Sample.Person WHERE ID < 5";
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
try
{
connection.Open();
Console.WriteLine("Connection successful!");
using (OdbcCommand command = new OdbcCommand(sql, connection))
using (OdbcDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"ID: {reader["ID"]}, Name: {reader["Name"]}");
}
}
}
catch (OdbcException ex)
{
// 3. Handle specific ODBC errors (e.g., wrong password, port blocked)
Console.WriteLine($"ODBC Error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"General Error: {ex.Message}");
}
// The connection is automatically closed at
// the end of the Using block.
}
}
}
下一步
这种无 DSN 的方法提供了灵活性,并避免了客户端配置的臃肿。对于高性能的 C# 应用程序,您可以考虑使用本地InterSystems ADO.NET Provider,但对于快速集成和工具兼容性,ODBC 连接是一个可靠的选择。
❗始终记住在生产代码中使用参数化查询,以防止 SQL 注入漏洞。
.png)
.png)
.png)
.png)
.jpg)
.png)