db.isopen和db!= null到底有什么区别?或者我可以将它们组合使用,并且以哪种推荐逻辑顺序使用?
例如
Database db = null;
try {
Session sess = NotesPlatform.getInstance().getSession();
db = sess.getDatabase(XPagesDataUtil.getServerName(server), database);
if (!db.isOpen()) {
try {
db.open();
} catch (NotesException ne) {
if (StringUtil.equals(DominoUtil.LOCAL_CLIENT, server)) {
die[0] = new DominoImportException(ne, "Unable to find Views in the database: " + database);
} else {
db = sess.getDatabase(XPagesDataUtil.getServerName(DominoUtil.LOCAL_CLIENT), database);
if (!db.isOpen()) {
db.open();
}
}
}
}
基本上,我想记录用户是否由于某些原因访问了他们无权访问的数据库:
try {
Database db = null;
db = Utils.getSession().getDatabase(sName, dbName);
if (!db.isOpen()){
try{
db.open();
}catch(NotesException e){
OpenLogUtil.logEvent(null, "User " + Utils.getSession().getEffectiveUserName() + " has unsufficient access for db:" + db.getFileName(), Level.INFO, null);
}
}
} catch (Exception e) {
OpenLogUtil.logErrorEx(e, JSFUtil.getXSPContext().getUrl().toString(), Level.SEVERE, null);
}
//my business logic here
似乎组合检查数据库是否存在以及用户是否具有足够的访问权限无法正常工作?
答案 0 :(得分:2)
db.isOpen
检查数据库是否已打开并可以在Lotus Notes域中使用。
db != null
检查db是否已准备好在Java域中使用。
即如果db.isOpen
是db
null
db = sess.getDatabase
确保db
不会是null
,因为getDatabase表示如果失败则不会返回null,因此不需要检查null:
如果无法打开数据库并且createonfail为True或省略, IsOpen为假
因此,文档有效地表明不需要检查null,因为db.isOpen
或true
取决于是否访问数据库。{p>