Lotus从数据库获取字段

时间:2013-03-19 10:50:03

标签: java lotus-domino

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

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

我有这个信息:

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

例如,字段是“abcde”; 那么我如何从该数据库中获取信息?我需要使用seatch配方?或者我需要使用哪些方法? Thanx寻求帮助。

UPD

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

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

它适用于我,但我认为这种方式不太舒服,因为找到一些文件例如field =“abcd”我需要每次迭代收集... 这就是为什么我要求某种方式通过字段值查找文档。我不明白数据库中的VIEW是什么以及在哪里获得此VIEW名称。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

例如:

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

2。您可以使用Database 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

答案 2 :(得分:1)

您必须深入查看要从中检索字段的DOCUMENT(而不是表单)。

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个帮助:客户端,开发和管理。发展就是你想要的。