使用assets本地SQLiteDatabase

2021-07-12 07:41:19 字數 2678 閱讀 6308

千里之行,始於足下。

過去一段時間學習了andorid,一直沒有做個總結,現在把一些用到的好的封裝工具類介紹給大家,都是參考大牛的,互相學習,歡迎指點!

在做郭霖的酷歐天氣的時候,需要建立全國各省市縣的id以及相互的對應關係的資料庫。存入assets目錄(作為應用自帶的資料庫),使用時通過該封裝 可以將資料庫拷貝到應用的database目錄下,之後apk只要不解除安裝,可以直接該運算元據庫檔案

使用方法:

只要呼叫一次

assetsdatabasemanager.initmanager(context);

之後程式在任何地方通過manager獲取database

assetsdatabasemanager manager = assetsdatabasemanager.getmanager();

sqlitedatabase database = manager.getdatabase(「***.db」);

我做的修改也就是加了個執行緒同步機制。

/** *@author huitailang 用來從assets目錄下讀取db檔案到

* 如果存在db,直接用opendatabase靜態方法開啟db 用io流操作檔案,1024位元組緩衝區

* * 該封裝只是在第一次使用資料庫檔案的時候把該資料夾拷貝到手機的/data/data/應用程式報名/database資料夾下,

* 之後就直接從這個地方使用了

* 。並且它允許你直接通過assets資料夾下的資料庫名稱來獲取sqlitedatabase物件,這樣就極大的方便了你對資料庫的使用

*/public

class

assetsdatabasemanager }}

public

static assetsdatabasemanager getmanager()

private

assetsdatabasemanager(context context)

/** 將屬性私有化,對外封裝,先initmanager,再getmanager 無論執行多少次,只對應全域性唯一例項minstance

* */

/** *@param assets_file assets目錄下的db檔案 "***.db"

*@return sqlitedatabse物件

*/public sqlitedatabase getdatabase(string assets_file)

if(context==null)

string spath=getdatabasefilepath();

string sfile=getdatabasefile(assets_file);

file file=new file(sfile);

/** */

sharedpreferences pf= context.getsharedpreferences(assetsdatabasemanager.class.tostring(), 0);

boolean flag=pf.getboolean(assets_file, false);

if(!flag||!file.exists())

if(!copyassettodatabase(assets_file,sfile))

log.d(tag, string.format("copy %s to %s success", assets_file,sfile));

pf.edit().putboolean(assets_file, true).commit();

}/*直接開啟database下的db檔案

* */

sqlitedatabase database=sqlitedatabase.opendatabase(sfile, null,sqlitedatabase.no_localized_collators);

if(database!=null)

return database;

}/**

* *@return /data/data/packagename/database/

*/private string getdatabasefilepath()

/***@param path ***.db

*@return 完整路徑: /data/data/packagename/database/***.db

*/private string getdatabasefile(string path)

/***@param path ***.db(in assets:)

*@param file new sqlitedatabase file in ***x/databse/

*@return true if success

*/private

boolean

copyassettodatabase(string path,string file)

} catch (ioexception e) finally catch (ioexception e)

}if(outputstream!=null) catch (ioexception e) }}

return

true;

}}

android中使用adb檢視sqlite資料庫

1.進入到控制台中,輸入adb shell,進入到命令模式的環境中 2.輸入cd data data 轉換到專案資料夾 3.選擇的專案檔案,比如我的com.android.homework,輸入命令 cd com.android.homework 4.可以使用ls l 命令檢視當前目錄中的檔案 5....

assets目錄下資源使用方法

載入assets win8 demo 目錄下的index.html網頁 webview.loadurl file android asset win8 demo index.html 說明 這種方式可以載入assets目錄下的網頁,並且與網頁有關的css,js,等檔案也會的載入。assetmanag...

res raw和assets資源檔案的使用

兩者目錄下的檔案都會原封不動的打包到apk中,不會被編譯成二進位制。而raw單個檔案不能超過1m,否則會報錯 data exceeds uncompress data max 就android raw讀取超過1m檔案,通過壓縮後檔案大小小於1m的可以參考 需要注意的是 res raw不可以有目錄結構...