0

我是莲花新手。我需要使用 Java 从 Lotus 数据库中获取一些信息。我有数据库:

Session session = NotesFactory.createSession(host, user, pwd);
Database database = session.getDatabase(server, database);

我有这个信息:

 field - fldContractorCode;
 form - form="formAgreement";

例如字段是“abcde”;那么我如何从该数据库中获取信息呢?我需要使用座位配方吗?或者我需要使用什么方法?感谢您的帮助。

UPD

现在我正在使用这种方式:

DocumentCollection collection = DATABASE.search("form=\"formAgreement\"");
Document doc = collection.getFirstDocument();
while(doc != null) {
   doc.getItemValueString("fldContractorCode");
   doc = collection.getNextDocument();
}

它对我来说很好,但我认为这种方式不是很舒服,因为要找到一些文档,例如 field="abcd" 我需要每次都遍历集合......所以我要求某种方式来按字段值查找文档。而且我不明白数据库中的 VIEW 是什么以及从哪里获得这个 VIEW 名称。

4

3 回答 3

2

在您现有的代码中,您只需更改一行:

DocumentCollection collection = DATABASE.search("form=\"formAgreement\ & "fldContractorCode=\"abcd\"");

但是,如果数据库包含许多文档,这将很慢。为了获得最佳性能,您应该考虑使用 Domino Designer 向数据库添加新视图并使用getDocumentByKey()其他答案中建议的方法。如果这不是一个选项,Simon 建议使用该FTSearch()方法比该Search()方法更快,但前提是数据库存在全文索引。搜索字符串的语法也略有不同。

于 2013-03-19T13:29:40.533 回答
1

有多种方法可以获取文档。

1. 从视图中搜索文档,其中视图的第一列包含 fldContractorCode 的排序值。

例如:

String key = "abide";
View view = db.getView("viewName");
Document doc = view.getDocumentByKey(key, true);

2.您可以使用数据库FTSearch方法进行全文搜索以查找文档。您将需要数据库来创建全文索引。

3. 如果您知道文档的 UNID 或注释 ID,您可以使用 getDocumentByUNID() 或 getDocumentByID()。

您的问题非常广泛,因此我建议您阅读信息中心,因为它详细介绍了每种方法的示例代码。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_NOTESDATABASE_CLASS_JAVA.html

于 2013-03-19T11:23:12.097 回答
1

您必须深入到要从中检索字段的文档(而不是表单)。

Lotus Notes 有一种非常容易理解的分层方式来到达您想要的位置。您将需要按以下顺序实例化对象:

Session
Database
View
Document 

假设您有一个名为 $(sysAgreements) 的视图,其中列出了所有表单“formAgreement”。它的选择公式是这样的:

SELECT Form="formAgreement"

要获取您想要的文档或文档,您将执行以下操作:

Session session = NotesFactory.createSession(host, user, pwd);
Database database = session.getDatabase(server, database);
View view = database.getView("$(sysAgreements)");
Document doc = view.getDocumentByKey(VIEW_KEY);
String fieldContent = doc.getItemValueString("fldContractorCode");

有多种方法可以从 Notes 数据库中检索信息。这是其中之一。请记住,Notes 使用 getDocumentByKey 搜索视图时使用的键是第一个排序的列。

如果要获取多个文档,可以使用:

DocumentCollection docCol = view.getAllDocumentsByKey(VIEW_KEY);

然后迭代它。

避免使用 ftsearch,因为它很慢而且对 Notes 来说有点痛苦。更喜欢在视图中查找。

另一个强大的帮助来源是 Notes 帮助。从安装了 Notes Development Client 的计算机上获取帮助数据库。但请注意您选择的帮助名称,Notes 中有 3 个帮助:客户端、开发和管理。发展是你想要的。

于 2013-03-19T11:36:03.737 回答