android創建sqlite數據庫及在SD卡上創建數據庫(二)

轉自:http://blog.csdn.net/chthq/article/details/7838033

二、在SD卡上創建數據庫

       通過android的SQLiteOpenHelper類的源碼,可以看到SQLiteOpenHelper類的getWritableDatabase

這個接口實際上調用的是Context的openOrCreateDatabase方法,而這個方法是不支持帶路徑的數據庫名

稱的,也就是說,用這個方法創建的數據庫只能放在/data/data/包名稱/ 目錄下;要想在SD卡上創建數據庫

,我們可以調用SQLiteDatabase類的openOrCreateDatabase方法,這個方法是支持帶路徑的數據庫名稱的。

那麼下面的問題就是如何判斷是否存在SD卡,已經如何獲取SD卡的路徑了?

       判斷是否存在SD卡:

       android.os.Environment.MEDIA_MOUNTED.equals(

android.os.Environment.getExternalStorageState());

       獲取SD卡路徑:String dbPath=android.os.Environment.getExternalStorageDirectory()

.getAbsolutePath();

       在SD卡上創建數據庫方法如下:

        String dbPath=android.os.Environment.getExternalStorageDirectory()

.getAbsolutePath()+"/database";
        File dbp=new File(dbPath);
        File dbf=new File(dbPath+"/"+"test.db");

                   
        if(!dbp.exists()){
               dbp.mkdir();
         }
                    
        //數據庫文件是否創建成功
         boolean isFileCreateSuccess=false; 
                    
         if(!dbf.exists()){
          try{                 
                   isFileCreateSuccess=dbf.createNewFile();
              }
          catch(IOException ioex){
                     
             }
                    
          }
            else{
                    
                    isFileCreateSuccess=true;
              }
          if(isFileCreateSuccess)
                    db = SQLiteDatabase.openOrCreateDatabase(dbf, mFactory);


          爲了簡便起見,我們可以用上述方法重寫SQLiteOpenHelper類的getWritableDatabase方法,

其他邏輯參照SQLiteOpenHelper類即可。最後別忘了,加入SD卡的讀寫權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章