安卓打開資料庫
在我幾個Android應用中,我需要訪問已有的資料庫。這些資料庫往往很大,甚至超過asset文件大約1兆位元組的限制。而且在新的版本中資料庫需要更新。我在網上,特別是StackOverflow看了一些文章,並做了一些試驗,覺得下面的代碼能基本上滿足我的需求。
其主要思路是:
1. 把資料庫分解成幾個asset文件。
2. 當需要打開資料庫時,如果資料庫不存在,就把那幾個asset文件重新合並成一個資料庫文件。
3. 如果資料庫的版本改變了,就在onUpgrade()方法中把資料庫文件刪除掉。下面是代碼://資料庫的預設路徑
private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";
private static finalString DB_NAME = "mydb.db";
private static finalint DB_VERSION = 2;
private static finalString DB_SPLIT_NAME = "mydb.db.00";
private static finalint DB_SPLIT_COUNT = 3;
private SQLiteDatabasem_database;
private final Contextm_context;
/**
* Constructor
*保存傳進來的context參數以用來訪問應用的asset和資源文件。
* @param context
*/
public MyDB(Contextcontext) {
super(context, DB_NAME, null, DB_VERSION);
this.m_context = context;
}
public static MyDBopenDatabaseReadOnly(Context context) {
MyDB db = new MyDB(context);try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}db.openDataBase(SQLiteDatabase.OPEN_READONLY);
return db;
}
public static MyDBopenDatabaseReadWrite(Context context) {
MyDB db = new MyDB(context);try {
db.createDataBase();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
return db;
}
/**
*創建一個空資料庫,用來存儲你已有的資料庫。
*/
public voidcreateDataBase() throws IOException{
boolean dbExist =checkDataBase();
if (dbExist) {
/*
**如果你的資料庫的版本改變了,調用這個方法確保在onUpgrade()被調用時
**傳進去的是可寫的資料庫。
*/
SQLiteDatabase db =this.getWritableDatabase();if (db != null) {
db.close();
}
}dbExist = checkDataBase();if (!dbExist) {
try {
/*
** 調用這個方法以確保在預設路徑內產生一個空資料庫,以便在其基礎上復制我們已有的資料庫。
*/
SQLiteDatabase db =this.getReadableDatabase();if (db != null) {
db.close();
}
DataBase();
}
catch (IOException e) {
Log.e("DB", e.getMessage());
throw new Error("Error ingdatabase");
}
}
}
/**
* 檢查資料庫是否已存在,以避免重復復制。
* @return true if it exists, false if itdoesn't
*/
private static booleancheckDataBase(){
SQLiteDatabase checkDB = null;
try {
String path = DB_PATH + DB_NAME;
checkDB =SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
}
catch (SQLiteException e){
//database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
/**
* 把存在asset文件中的資料庫復制的剛創建的空資料庫中。
* */
private voidDataBase() throws IOException {
// 剛創建的空資料庫的路徑
String outFileName = DB_PATH + DB_NAME;
// 打開空資料庫
OutputStream output = new FileOutputStream(outFileName);byte[] buffer = new byte[1024*8];AssetManager assetMgr =m_context.getAssets();for (int i = 1; i <= DB_SPLIT_COUNT; i++){
// 打開分解的asset文件
String fn = DB_SPLIT_NAME +String.valueOf(i);
InputStream input = assetMgr.open(fn);
//Log.i("DB", "opened" + fn);int length;
while ((length = input.read(buffer)) >0) {
//Log.i("DB", "read" + String.valueOf(length));
output.write(buffer, 0, length);
//Log.i("DB", "write" + String.valueOf(length));
}
input.close();
}//Close the streams
output.flush();
output.close();
}/**
* 打開資料庫。
* */
private voidopenDataBase(int flags) throws SQLException{
//Open the database
String myPath = DB_PATH + DB_NAME;
m_database =SQLiteDatabase.openDatabase(myPath, null, flags);
}/**
* 關閉資料庫。
* */
@Override
public synchronizedvoid close() {
if (m_database != null)
m_database.close();
super.close();
}
}@Override
public voidonCreate(SQLiteDatabase db) {
// 不需做任何事
}/**
* 在資料庫版本提高時,刪除原有資料庫。
* */
@Override
public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (newVersion > oldVersion) {
m_context.deleteDatabase(DB_NAME);
}
}
轉載
『貳』 安卓手機上有沒有能打開access資料庫的程序
這個目前我還沒遇到過,安卓使用的資料庫是sqlite,而access是人家微軟的,使用Jet引擎,而jet還沒有對安卓提供支持。我是做軟體開發的,雖然不是主攻安卓,但清備畝是這個問題我還是可以肯定的。你可以試試在pc端把access數據導出,轉換到sqlite資料庫,再用手機打開,答森手機端可以使滾則用Sqlite Editor工具
『叄』 安卓手機如何打開db文件
手機打不開,只能在電腦端打開,操作方法如下:
操作設備:戴爾電腦
操作系統:win10
操作軟體:SQLite Expert Professional 3 db文件管理器
1、首先准備必備的工作,准備好SQLite Expert Professional 3 db文件管理器,和一個手機db文件。
『肆』 android自帶的資料庫怎麼打開表
1、打開adb.exe;
2、打開DDMS(AndroidDeviceMonitor);
3、獲取許可權。在獲取許可權的時候,需要一步一步的獲取文件夾許可權。獲取data文件夾許可權,獲取dada/dada文件夾許可權,獲取應用db文件,導出db文件;
4、查看資料庫結構。
『伍』 android系統sqlite資料庫文件怎麼打開
切換到ddms,顯示file
explorer窗口,找到/data/data/然後找到自己用的程序包的文件夾,打開databases,就看到sqlite資料庫文件了,然後到處就可以了。步驟上面標注好了,1,2,3。這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如sqlite
administrator、sqlite
man或者firefox插件sqlite
manager等打開就可以了。
『陸』 安卓手機如何打開.dbf文件
- 01
安卓手機沒有能打開.dbf文件的方法,電腦可以直接用Excel打友櫻開。dbf是一種特殊的文件格式,表示資料庫文件,Foxbase、Dbase、Visual FoxPro等資料庫處理系統敗告皮所產生的資料庫文件。
DBF格式資料庫是常用的桌面型資料庫。作為一個在商業應用中的結構化數據存儲標准格式,DBF格式文件得以廣泛的應察差用於各類企業及事業單位用於數據交換。
dbf文件可以直接用EXCEL打開,用ACCESS打開。ACCESS資料庫-Microsoft Access是一種關系式資料庫,關系式資料庫由一系列表組成,表又由一系列行和列組成。
dbf文件可以用資料庫瀏覽器打開。《DataBaseBrowser資料庫瀏覽器》是資料庫資料查詢瀏覽的工具軟體,可以查詢資料庫數據內容,也可以查詢資料庫的結構信息,包括資料庫信息,表結構、索引、主鍵的信息,並且可以查詢資料庫查詢及視圖信息。
『柒』 安卓手機如何打開.ucmd2文件
1.在電腦安裝
sqlitedeveloper,安裝後在桌面生成圖標,點擊圖標打開程序。2.打開程序後,可以看到程序左邊的「資料庫列表」。展開可以查看到所有打開過的資料庫。3.點擊一個.db文件,把這個.db直接拖拉進程序窗口。4.顯示「注冊資料庫」,點擊【確定】,這樣就可以用
sqlitedeveloper管理這個.db文件了。5.展開左邊資料庫列表,找到剛才注冊的.db文件。點擊右鍵菜單的【打開資料庫】。6.打開資料庫後可以看到這個.db文件中有很多的數據表,選擇其中一個,右鍵點擊【查詢數據】。則可以
『捌』 安卓怎麼讀取sqlite資料庫
安裝SQLite Expert Professional 可以在網上下載,我下載的是試用版,沒有找注冊碼,但是試用不影響使用,反正用幾次查看到資料庫操作沒有錯誤就不用這個工具了。當然也可以使用Eclipse插件DDMS來查看,也可以使用Android工具包中的adb工具來查看。android項目中的sqlite資料庫位於/data/data/項目包/databases中。先介紹使用DDMS導出sqlite資料庫的操作和使用adb工具訪問sqlite資料庫。
首先打開android項目的調試模式,然後找到顯示DDMS
切換到DDMS,顯示File Explorer窗口,找到/data/data/ 如下圖1 ,
然後找到程序包的文件夾,打開databases,就能看到sqlite資料庫文件了。選擇將其導出。如下圖2.
這樣就把sqlite資料庫文件以文件的方式導出來了,然後使用sqlite界面管理工具如SQLite Expert Professional可以打開該資料庫了。其他 sqlite界面管理工具如sqlite administrator、sqlite man或者firefox插件sqlite manager也可以打開該資料庫。
使用adb工具訪問sqlite資料庫
Android Debug Bridge(ADB)是Android的一個通用調試工具,它可以更新設備或模擬器中的代碼,可以管理預定埠,可以在設備上運行shell命令,我們 知道android是基於linux內核,它的內部文件結構也是採用linux文件組織方式,因此訪問它的文件結構需要使用shell。這次我們就會用 shell來訪問android應用中的sqlite資料庫文件。
1、運行cmd,切換到android-sdk目錄,運行adb.exe,加上參數shell,出現#號就代表進入了shell命令模式,注意adb要在Android模擬器運行時才能進入shell:如下圖
進入資料庫所在目錄:
shell命令記住兩個基本命令ls和cd,類似windows命令提示行中的dir和cd,代表列出當前目錄下文件列表和進入到指定目錄。了解這兩個命令之後,就可以找到data/data/項目包名/databases 如下圖1, 找到資料庫文件如下圖2。
使用sqlite管理工具來進行資料庫操作
鍵入sqlite3 資料庫名就進入了sqlite管理模式了。
如下圖
設置sqlite環境變數:
在android的sdk中自帶了sqlite3.exe,這是sqlite的官方管理工具,它是一個命令行工具。為了使用方便,將其路徑注冊到系 統環境變數path中,即將;%Android_Home%加在Path中,這樣只樣運行sqlite3,就能直接打開sqlite管理工具了。
如下圖:
8
使用sqlite管理資料庫:
sqlite命令行工具默認是以;結束語句的。所以如果只是一行語句,要在末尾加;,或者在下一行中鍵入;,這樣sqlite命令才會被執行。
sqlite常用命令:
.tables--查看資料庫的表列表
.exit--退出sqlite命令行
其他命令可隨時.help查看幫助。sql命令可直接在此命令行上執行即可: