db.isopen和db!= null之间的区别

时间:2019-05-13 12:36:57

标签: java lotus-notes

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

似乎组合检查数据库是否存在以及用户是否具有足够的访问权限无法正常工作?

1 个答案:

答案 0 :(得分:2)

根据documentation

db.isOpen

检查数据库是否已打开并可以在Lotus Notes域中使用。

db != null

检查db是否已准备好在Java域中使用。

即如果db.isOpendb

,则不能使用null
db = sess.getDatabase

确保db不会是null,因为getDatabase表示如果失败则不会返回null,因此不需要检查null:

  

如果无法打开数据库并且createonfail为True或省略,   IsOpen为假

因此,文档有效地表明不需要检查null,因为db.isOpentrue取决于是否访问数据库。{p>