java 访问 domino数据库 怎么设置查询条件
头一次接触domino,现在想用java从domino数据库中查询文档数据,代码如下:
try {
//如果已将ior文件拷到本地,则直接读ior文件
try {
BufferedReader iorin= new BufferedReader(new FileReader("diiop_ior.txt"));
ior = iorin.readLine();
iorin.close();
} catch (IOException e) {
ior = null;
}
//如果读不到diiop_ior.txt文件,则需要通过网络从服务器下载这个文件
//这需要domino服务器开放http服务
if(ior == null) {
ior = NotesFactory.getIOR(dominoServer);//下载IOR
}
session = NotesFactory.createSessionWithIOR(ior,username,password);
logger.info("连接邮件服务器成功" );
//得到数据库
database = session.getDatabase(session.getServerName(), mailFile, false);
Document doc = database.createDocument();
View vw = null;
View vw1 = database.getView("Incidents\\All");
if(null == vw1){
logger.info("没有符合条件的视图");
return null;
}
int aa = vw1.FTSearch("测试邮件");
vw1.getAllDocumentsByKey("");
Document doc1 = vw1.getFirstDocument();
int begin = 0;
while(doc1!=null){
Vector columnNames = vw1.getColumns();
if(begin==0){
System.out.println("columnNames -- "+columnNames+" -- end");
}
//------------------------------------------
Vector srVector = doc1.getColumnValues();
//详细列
Vector itemVector = doc1.getItems();
String subject = (String)doc1.getItemValue("Subject_NAV").get(0);
String content = (String)doc1.getItemValue("Findings_NAV").get(0);
String author = (String)doc1.getItemValue("Author_NAV").get(0);
String recipients = (String)doc1.getItemValue("Recipients").get(0);
DateTime created = (DateTime)doc1.getItemValue("Created_NAV").get(0);
System.out.println("发送人="+author+" 标题="+subject+" 内容="+content+" 接收人="+recipients+" 生成日期="+created);
System.out.println("============="+itemVector);
System.out.println("begin -- "+srVector+" -- end");
//------------------------------------------
begin++;
doc1 = vw1.getNextDocument(doc1);
}
str = "success";
} catch (Exception ex) {
if(ex instanceof lotus.domino.NotesException){
logger.info("通过CORBA访问数据库发生错误,错误代码为"+((lotus.domino.NotesException)ex).id);
}
logger.info("连接邮件服务器失败");
str = "fail";
ex.printStackTrace();
}finally{
if(database!=null){
try {
database.recycle();
} catch (NotesException e) {
e.printStackTrace();
}
}
if(session!=null){
try {
session.recycle();
} catch (NotesException e) {
e.printStackTrace();
}
}
}
得到的输出结果是:
columnNames -- [, , Date, Category, Action Taken, Database, Author, Violation] -- end
发送人=admin/lon 标题=测试邮件 内容=The attachment eicarcom2.zip 接收人=CN=test/O=lon 生成日期=12/27/2012 17:36:33 ZE8
=============[Type_NAV, Form, Author_NAV, Subject_NAV, Created_NAV, Modified_NAV, Accessed_NAV, DatabaseTitle_NAV, DatabasePath_NAV, Server_NAV, ScannedDate_NAV, Recipients, ScanType_NAV, DefinitionsDate_NAV, ActionSetting_NAV, Findings_NAV, DocumentActionNum_NAV, DocumentAction_NAV, ViolationCategory_NAV, ViolationType_NAV, ViolationName_NAV, ViolationAction_NAV, StillInfected_NAV, Quarantined_NAV, Link_NAV, $UpdatedBy]
begin -- [IBM365/longway, 115.0, 12/27/2012 17:36:33 ZE8, Threat/Security Risk, Quarantined, IBM365 Mailbox, admin/longway, EICAR Test String] -- end
可以看到输出的生成日期是“12/27/2012 17:36:33 ZE8”
问题是,如果我想查询出的文档的“生成日期”在一定日期范围的话,应该在哪里添加这个条件?可以实现么,帮忙指点一下。 java domino
分享到:
[解决办法]
这个可以实现,用db.search(formula),formula里面加上日期比较。