【发布时间】:2013-03-14 16:13:32
【问题描述】:
我们使用非常旧的 Informix (SE) 版本。我正在尝试在 C# 中创建一个 ORM 类型框架来处理 CRUD 过程。我很难想出一种方法来处理包含 SERIAL 字段的表。
基本上,我想以某种方式创建一个唯一值,我可以合理地确定在我插入记录时仍然是唯一的,或者至少获得我刚刚插入的记录的值。如果许多用户同时使用该表,这必须有效(因此是数据库范围的方案)。
我知道较新的版本具有可以设置的“序列”对象,但 SE 没有。
【问题讨论】:
-
Informix ODBC 驱动程序提供了一种获取插入序列号的方法; ESQL/C 也可以(在 sqlca 结构中)。你能从 C# 中得到任何东西吗?您使用的是哪个版本的 Informix SE?您在哪个平台上使用它?
-
我在 IBM 的网站上试过,但显然我的 SE 版本不支持 sqcla。 publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/…
-
实际上,我和我们的 db 人员谈过,它仅在 unix 4gl/4ge 中支持。我正在尝试在 Windows 中使用 csharp。
-
SE 支持
sqlca;它在 1985 年首次发布时就做到了,从那时起就一直如此。但是,AFAIK,SE 根本不支持DBINFO(),更不用说DBINFO()的sqlca部分了。查看 Informix(动态服务器)手册以获取有关 SE 的信息将会很困难。 (我将从SE home page 开始。)您的C# 框架正在使用哪个底层API;你用什么来建立与 SE 的连接? .NET 驱动程序?还是 ODBC 驱动程序?还是别的什么? -
我们使用 OdbcConnection 对象连接数据库。根据连接字符串,我们使用的是 {IBM INFORMIX ODBC DRIVER} 驱动程序、sqlexec 服务和 sesoctcp 协议。