天天看點

安卓讀取mysql資料庫檔案路徑_擷取SQLite資料庫檔案路徑

前言

這篇文章主要介紹了sqlitedatabase如何擷取資料庫路徑

擷取資料庫檔案路徑

先來回顧下SQLiteDatabase學習(二)中建立資料庫類DBOpenHelper,然後稍作修改,将DBOpenHelper改為如下代碼

package com.example.pei.textdemo.sqlite;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper{

private static final String DB_NAME = "test_demo.db";//資料庫檔案名

private static SQLiteDatabase INSTANCE;

private Context mContext;

public SQLiteDatabase getInstance() {

if (INSTANCE == null) {

INSTANCE = new DBOpenHelper(mContext).getWritableDatabase();

}

return INSTANCE;

}

public DBOpenHelper(Context context) {

this(context, DB_NAME, null, 1);

this.mContext=context;

}

public DBOpenHelper(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int version) {

super(context, dbName, factory, version);

}

public String getDBPath(){

return mContext.getDatabasePath(DB_NAME).getPath();

}

//首次建立資料庫時調用,一般進行建庫建表操作

@Override

public void onCreate(SQLiteDatabase db) {

String createTable = "CREATE TABLE IF NOT EXISTS user(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +

" name text,\n" +

" sex text,\n" +

" age integer);";

//建立表

db.execSQL(createTable);

}

//當資料庫的版本發生變化的時候會自動執行,禁止人為調用

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

這裡需要注意的是,上面代碼與SQLiteDatabase學習(二)的DBOpenHelper多加了一個方法

public String getDBPath(){

return mContext.getDatabasePath(DB_NAME).getPath();

}

此方法用于擷取資料庫檔案的路徑

然後将SQLiteDatabase學習(二)中DBHelper類稍作修改并增加擷取資料庫路徑的方法

package com.example.pei.textdemo.sqlite;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import com.example.pei.textdemo.app.AppContext;

import java.util.List;

public abstract class DBHelper {

protected DBOpenHelper mDBOpenHelper;

protected String getDatabasePath(){

if(mDBOpenHelper==null){

mDBOpenHelper=new DBOpenHelper(AppContext.getInstance());

}

return mDBOpenHelper.getDBPath();

}

protected SQLiteDatabase getDateBase(){

if(mDBOpenHelper==null){

mDBOpenHelper=new DBOpenHelper(AppContext.getInstance());

}

return mDBOpenHelper.getInstance();

}

protected void closeDB(){

SQLiteDatabase db = getDateBase();

if(db!=null){

db.close();

}

}

protected boolean isTableExist(String tableName){

Cursor cursor = getDateBase().rawQuery("select name from sqlite_master where type='table';", null);

while(cursor.moveToNext()){

//周遊出表名

String name = cursor.getString(0);

if(name.equals(tableName)){

return true;

}

}

return false;

}

protected abstract List> checkAll();

protected abstract void insert(Object obj);

protected abstract void delete(Object obj);

protected abstract void update(Object obj);

}

這裡我們可以看見DBHelper類中getDateBase做了些修改,并增加了擷取資料庫路徑的方法如下

protected String getDatabasePath(){

if(mDBOpenHelper==null){

mDBOpenHelper=new DBOpenHelper(AppContext.getInstance());

}

return mDBOpenHelper.getDBPath();

}

UserDBHelper的代碼和SQLiteDatabase學習(二)中的沒有什麼變動,在此就不展示了。

然後在activity中,我們就可以直接調用擷取資料庫檔案路徑了

String dbPath=UserDBHelper.getInstance().getDatabasePath();

擷取的預設sqlite資料庫檔案位置為:

com.example.pei.textdemo E/pei: ===/data/data/com.example.pei.textdemo/databases/test_demo.db

ok,今天的内容就講到這裡,謝謝!