在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"); |
- 新增:是所有操作裡最快的,因為沒有PK值的緣故。
Document doc = db.createDocument(); |
- 查詢: 類似於Where條件式如右:Form = "myForm" & Item1 = "test",&等同and,值需要用雙引號括起。
DocumentCollection dc = db.search("Form = \"myForm\" & Item1 = \"test\""); |
- 刪除:doc.remove(true)。得逐筆remove,沒有SQL的Where一般多筆刪除,但不必再加doc.save()動作。
- 修改:也是逐筆update。
doc.replaceItemValue("item_name", "item_data"); // 置換欄位值 |