文章
· 一月 24 阅读大约需 4 分钟

通过 ODBC 将 C# 连接到 InterSystems IRIS

对于构建外部应用程序的开发人员,尤其是使用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 驱动程序)。

第 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

下一步

这种无 DSN 的方法提供了灵活性,并避免了客户端配置的臃肿。对于高性能的 C# 应用程序,您可以考虑使用本地InterSystems ADO.NET Provider,但对于快速集成和工具兼容性,ODBC 连接是一个可靠的选择。

❗始终记住在生产代码中使用参数化查询,以防止 SQL 注入漏洞。

讨论 (0)1
登录或注册以继续