做即時通訊做的久了,老是想著各種優化的問題
前面已經有兩篇
下面主要介紹多使用者資料庫的分庫實現
@dbtable
("tb_user"
)public
class
user
}
登入狀態
enum state
繼承basedao
public
class
userdao
extends
basedao
@override
public
long
insert
(user entity)
if(user.
getstate()
== state.default.
ordinal()
)// 設定之前使用者為未登入
where =
newuser()
; where.
setid
(user.
getid()
);user.
setstate
(state.default.
ordinal()
);update
(user, where)
; log.
i(tag, user.
getname()
+"-->logout");
}// 設定當前使用者為登入狀態
entity.
setstate
(state.login.
ordinal()
);where =
newuser()
; where.
setid
(entity.
getid()
);int result =
update
(entity, where);if
(result >0)
else
}// 獲取當前登入的使用者資訊
public user getcurrentuser()
return null;
}}
我們需要獲取到userdao的例項物件,可以使用反射的方式獲取
// 根據dao和物件獲取basedao物件
public
synchronized
basedao
, m> t getbasedao
(class
daoclass, class
entityclass)
trycatch
(instantiationexception e)
catch
(illegalacces***ception e)
return
(t) basedao;
}
// 測試登陸和切換使用者
public
void
onlogin1
(view view)
檢視資料庫裡的內容,我們可以看到使用者1已經被插入到資料庫中,這時,我們的總控使用者就完成了它的使命,下面我們就開始各個使用者在相應的資料夾下建立資料庫並操作
分庫的主要的步驟為
登入使用者
查詢使用者資料夾和使用者資料庫,如未建立,就建立
構建dao
// 獲取子查詢dao
public
synchronized
basedao
, m> t getsubdao
(class
daoclass, class
entityclass)
string dbpath = dbenums.database.
getvalue
(mdbparentdir);if
(textutils.
isempty
(dbpath)
) log.
i(tag,
"sub db path:"
+ dbpath)
; subsdb = sqlitedatabase.
openorcreatedatabase
(dbpath, null)
;try
catch
(instantiationexception e)
catch
(illegalacces***ception e)
return null;
}
獲取位置資訊
public string getvalue
(string parentdir)
return file.
getabsolutepath()
+"/dds.db";}
}return value;
}
因為獲取存入的位置需要context,需要先呼叫之前init方法,獲取位置
// 設定插入資料
public
void
onsubinsert
(view view)
mycat資料庫集群系列之資料庫多例項安裝
mycat資料庫集群系列之資料庫多例項安裝 最近在梳理資料庫集群的相關操作,現在花點時間整理一下關於mysql資料庫集群的操作總結,恰好你又在看這一塊,供乙份參考。本次系列終結大概包括以下內容 多資料庫安裝 mycat部署安裝 資料庫之讀寫分離主從複製 資料庫之雙主多重 資料庫分庫分表。每乙個點,有...
資料庫系列綜述
終於,伴隨草稿箱中的內容清空,資料庫相關的分享也告一段落了,其實筆記本中還有很多內容沒有來得及分享,例如 1 正規化 2 物理儲存結構 storage and file structure 3 索引 indexing and hasing 4 併發控制 concurrencycontrol 5 恢復...
android資料庫事務
在android應用程式開發中,在使用到資料庫的時候,事務處理是非常重要的。首先android資料庫操作 特別是寫操作 是非常慢的,將所有操作打包成乙個事務能大大提高處理速度。其次是保證資料的一致性,讓乙個事務中的所有操作都成功執行,或者失敗,或者所有操作回滾。實現android資料庫事務非常簡單,...