IObjectServer server = Db4oFactory.OpenServer("db.filename", 0); try { IObjectContainer client = server.OpenClient(); // 讓 client 端做某些事情 // ... client.Close(); } finally { server.Close(); }在 db4o 中,client 端的 transaction 只處於 read commit(不過每個 client container 都維護一個 weak 參考快取,參考到它所有已知、參考到的物件)。要讓所有 client 端中未決的更新 comment 立即執行,我們可以明確的自伺服器中的更新已知的物件:
IObjectContainer client1 =server.OpenClient(); IObjectContainer client2 =server.OpenClient(); IListresult1 = client1.Query (delegate(Article art) { return art.PMID == "7533967" && art.GM_Version == GeneMentionTagger.VERSION; }); IList result2 = client2.Query (delegate(Article art) { return art.PMID == "7533967" && art.GM_Version == GeneMentionTagger.VERSION; }); Article a = result1.Next(); // 修改 a 的內容 client1.Store(a); client2.Ext().Refresh(a,Int16.MaxValue); // 取得更新後的內容 client1.Commit();
遠端資料庫伺服器
要讓 db4o 能夠使用 TCP/IP 網路存取遠端的資料庫方法很簡單,只要指定連接埠大於零,並且設定一至多個 client 即可!IObjectServer server = Db4oFactory.OpenServer("db_filename", 655); server.GrantAccess("user", "passwd"); try { IObjectContainer client = Db4oFactory.OpenClient("localhost", 655, "user", "passwd"); // Do something with this client, or open more clients client.Close(); } finally { server.Close(); }
如上例所示,client 連接提供了主機、埠號、使用者名稱和密碼的設定。
就這樣...其它的使用方式就跟在本地端一模一樣。
沒有留言:
張貼留言