1. 程式人生 > >Android系列之SQLite與Android Studio的資料互動

Android系列之SQLite與Android Studio的資料互動

一、把db放在res的下方創一個raw資料夾,裡面用來放db

二、創一個DbHelper類,實際程式碼如下:

public class DbHelper extends SQLiteOpenHelper{  
        /** 
         * 
         * @param context 上下文 
         * @param name 資料庫的名字 
         * @param factory 資料庫工廠,null 
         * @param version  資料庫的版本 
         */  
        public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {  
            super(context, name, factory, version);  
        }  

        @Override  
        public void onCreate(SQLiteDatabase db) {  
        }  

        @Override  
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        }  
    }  
三、然後再相同的目錄下創一個DbManager類,就可以了
public class DbManager {  
    public static final String DB_NAME = "wenwen.db"; //資料庫名字  
    public static final String PACKAGE_NAME ="com.zking.laci.android_project";//包名  
    public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;   //資料庫的絕對路徑( /data/data/com.*.*(package name))  
    private SQLiteDatabase db;  
    private Context context;  
  
    public DbManager(Context context) {  
        this.context = context;  
    }  
  
    //對外提供的開啟資料庫介面  
    public void openDataBase() {  
        this.db = this.openDataBase(DB_PATH + "/databases");  
    }  
  
    //獲取開啟後的資料庫  
    public SQLiteDatabase getDb() {  
        return this.db;  
    }  
  
    // 本地開啟資料方法  
    private SQLiteDatabase openDataBase(String filePath) {  
        try {  
            File file = new File(filePath);  
            if (!file.exists()) { //判斷檔案是否存在  
                //通過輸入流和輸出流,把資料庫拷貝到"filePath"下  
                file.mkdir();  
                File file2=new File(filePath+"/"+DB_NAME);  
                if (!file2.exists()) {  
                    InputStream is = context.getResources().openRawResource(R.raw.wenwen);//獲取輸入流,使用R.raw.test資源  
                    FileOutputStream fos = new FileOutputStream(file2);  
                    byte[] buffer = new byte[1024];  
                    int readCount;  
                    while ((readCount = is.read(buffer)) > 0) {  
                        fos.write(buffer, 0, readCount);  
                    }  
                    fos.close();  
                    is.close();  
                }  
            }  
//開啟資料庫  
            SQLiteDatabase db =new DbHelper(context,"wenwen.db",null,2).getWritableDatabase();  
            return db;  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
  
    //關閉資料庫  
    public  void closeDataBase()  
    {  
        if(this.db!=null)  
            db.close();  
    }  
}  
四、最後在你第一個開始執行的activity中,寫下以下程式碼就完成互動了(呼叫)
DbManager dbManager=new DbManager(getApplicationContext());  
       dbManager.openDataBase();