1

我对 Unidata 完全陌生。我正在尝试编写一个可以从 Unidata 查询记录的 Java 应用程序。我下载了 U2 Clients 包并安装了 UniDK。我按照这个例子。我能够使用 asjava.zip 中的库通过键/ID 从 Unidata 中的文件中获取单个记录。

我遇到了建议使用 JPA 的 U2 Clients 文档。我想知道是否有任何其他选项可以编写数据库查询来获取具有 WHERE 条件的记录列表而不实现 JPA。我正在寻找与使用 PHP 编写 MySQL 查询类似的东西。

谢谢。

4

3 回答 3

3

对一个好答案的后期跟进:如果您有一名 unidata 程序员,最好调用一个子例程,您只需传递参数即可获得所需的内容。有点像用其他语言调用存储过程。这根本不是一个要求,但它可能是一个很好的方法,你有一个 java 程序员和一个 unidata/pick 程序员在一个项目上一起工作......

于 2013-11-19T22:24:07.050 回答
2

如果您需要定期从 Java 访问 Unidata 数据库,Rocket(Unidata 的所有者)有一个名为“UniObjects for Java”的产品,它包含一个访问 Unidata 的类库,包括登录、执行查询和调用 BASIC 子程序。与我合作过的大多数需要执行此操作的开发人员都使用此产品。

https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/unidata/previous%20versions/v7.2/unidata_uniobjectsjavadevguide_v72.pdf

于 2019-07-11T16:39:42.677 回答
1

是的你可以。首先,您需要了解一些关于 UniQuery 的知识,它是 UniData 数据库的查询语言。您可以在Rocket Software 网站的手册中找到它。

例如,假设您有一个名为的文件和名为的customers字段name和 `age1

SELECT customers WITH name LIKE "Dan..." AND age GT "20"

此 select 语句将生成name以 Dan 开头且age大于 20 的记录 ID 列表。

在您的代码中,您需要先执行 SELECT 语句。假设udSess是您创建的会话:

UniCommand cmd = udSess.command(); // Create an object to run the command
cmd.setCommand("SELECT customers WITH name LIKE 'Dan...' AND age GT '20'")
cmd.exec()

UniSelectList sl = udSess.selectList(0);

while (!sl.isLastRecordRead())
{
   UniString recordID = sl.next();
   // Read your record here, using recordID
}
于 2013-06-28T12:48:22.443 回答