You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Uniface 9.7中对Informix数据库发起请求并查询指定数据?

在Uniface 9.7中连接Informix并执行指定查询操作

一、先完成Informix数据库连接配置

1. 配置Informix ODBC数据源

确保已安装Informix ODBC Driver(推荐3.7及以上兼容版本),然后通过系统ODBC数据源管理器创建系统DSN:

  • 选择Informix ODBC Driver,填写数据源名称(例如INFORMIX_PERSON_DB)
  • 指定Informix服务器地址、数据库名、端口,以及数据库用户名和密码
  • 测试连接,确认能正常访问目标数据库

2. 配置Uniface Assignment文件

修改Uniface的usys.asn(或自定义业务asn文件),添加以下配置:

[DRIVER_SETTINGS]
; 配置Informix ODBC驱动适配
INFORMIX=ODBC

[PATHS]
; 绑定数据库连接到$DB变量,替换为你创建的ODBC数据源名
$DB=ODBC:INFORMIX_PERSON_DB

3. 验证连接

打开Uniface IDE的Database Manager,选择配置好的$DB连接,确认能看到person表,确保连接生效。


二、实现查询id=5的person记录

以下提供两种常用实现方式:

方式1:基于Uniface实体(推荐标准做法)

步骤1:创建对应person表的实体

在Uniface中创建实体PERSON,映射数据库表字段:

  • 字段id:类型为NUMBER,对应数据库INT类型
  • 字段name:类型为STRING,对应数据库VARCHAR类型
  • 字段age:类型为NUMBER,对应数据库INT类型
  • 设置实体的DBMS属性为INFORMIX,连接使用$DB

步骤2:编写查询代码

在服务组件(Service Component)或表单的触发逻辑中写入以下代码:

; 清空实体当前缓存记录
clear PERSON

; 设置查询条件:id=5
PERSON.id = 5

; 执行查询
retrieve PERSON

; 判断查询结果
if ($status = 0) then
   ; 查询成功,输出字段值
   message "查询结果:Name=" || PERSON.name || ", Age=" || PERSON.age
else
   ; 未找到匹配记录
   message "未找到id=5的person记录"
endif

方式2:使用动态SQL(灵活场景)

如果不需要依赖实体,可直接用动态SQL执行查询:

; 定义带参数的SQL语句
v_sql = "SELECT name, age FROM person WHERE id = ?"

; 准备SQL语句
prepare stmt_person from v_sql

; 设置参数(占位符?对应的值为5)
set param 1 to 5

; 执行查询并将结果存入变量
execute stmt_person into v_name, v_age

; 处理结果
if ($status = 0) then
   message "查询结果:Name=" || v_name || ", Age=" || v_age
else
   message "未找到id=5的person记录"
endif

; 释放SQL语句资源
release stmt_person

注意事项

  • 确保实体字段类型与数据库表字段类型严格匹配,避免类型转换错误
  • 多用户场景下,需配合start transaction、commit/rollback处理事务
  • 若出现连接或查询错误,可通过Uniface的$procerror和$procerrorcontext变量排查具体问题

内容的提问来源于stack exchange,提问作者Mi2830

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:06:19