Android手擼資料庫系列 多使用者分庫的實現

2021-09-25 07:27:04 字數 2716 閱讀 7228

做即時通訊做的久了,老是想著各種優化的問題

前面已經有兩篇

下面主要介紹多使用者資料庫的分庫實現

@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資料庫事務非常簡單,...