close

  在Microsoft的spaces寫部落格最大的好處,除了即時分享給msn的朋友之外,對岸的同好也能搜尋到。而最大的壞處,不能像Google的Blog可以多重分類標籤,而且分類標籤居然有上限,和字母同字數。原本Lotus Notes被Java call的,只好放在Java類裡>"<。

  Survey了一段時間,對Lotus Notes的增改刪查有些掌握。Notes的資料庫是階層式資料庫,不同於關聯式資料庫(RDBMS),其Database是一個後綴名的.NSF檔。Notes和RDBMS的比較對照如下:

RDBMS Notes物件 Description
Database Database (NSF檔)  
Table Form Notes根本沒Table觀念,Form其實是一個特定的Item名,用於Notes UI的欄位。
Record (Row) Document 通常會有名為Form的Item(不表示一定有),同一個Form值表示隸屬同一個Form(Table)。
Column Item 除了Form,也許有其它特定的Item名(目前未知),其它由User自訂。
Key (嗯…) 允許Document重複,沒有PK值。基本上Notes是有索引,目前還沒深入研究。

  從上面比較來看,我指定一個Item名叫Author去搜尋,是可以跨不同的Form(Table)去找的,所以search通常還要再指定Item名為Form的值去搜尋,才能做到類似RDBMS的Select table。

  • 起手式:連DB需要建Connection,連Notes則要建Session,不同的是Notes的Session沒有close等method,看來也沒有Connection Pool的問題:

Session s = NotesFactory.createSession("1.2.3.4", "admin", "password");
Database db = s.getDatabase("server_url", "TEST.NSF");

  • 新增:是所有操作裡最快的,因為沒有PK值的緣故。

Document doc = db.createDocument();
doc.appendItemValue("item_name", "item_data"); // 設置欄位值
boolean ok = doc.save();

  • 查詢: 類似於Where條件式如右:Form = "myForm" & Item1 = "test",&等同and,值需要用雙引號括起。

DocumentCollection dc = db.search("Form = \"myForm\" & Item1 = \"test\"");
if (dc.getCount() > 0) {
    Document doc = dc.getFirstDocument();
    while (null != doc) {
        // … 處理修改或刪除的程式,對doc(Document物件)操作
        doc = dc.getNextDocument();
    }
}

  • 刪除:doc.remove(true)。得逐筆remove,沒有SQL的Where一般多筆刪除,但不必再加doc.save()動作。
  • 修改:也是逐筆update。

doc.replaceItemValue("item_name", "item_data"); // 置換欄位值
boolean ok = doc.save();

arrow
arrow
    全站熱搜

    Jemmy 發表在 痞客邦 留言(0) 人氣()