Android本地數據操作

f663x 9年前發布 | 1K 次閱讀 Java Android

      在安卓開發中,不操作數據庫的情況幾乎是不可能的!一般情況下我們是在啟動應用后,會在本地建立數據名(DATABASE_NAME)為XX數據庫,然后 在需要用的時候進行增刪改查操作。但有時候,我們也可能不會這樣進行操作,我們會先把建立好的數據庫放在項目的本地文件夾(如 res/raw,assert)下面,然后再對數據庫進行操作。這種方案也有一定的好處,就是我們先可以用數據庫工具建立好數據表,然后直接在代碼中操作 表就可以了,就不用再用create table之類的建表語句建立表格,可以減少一些代碼。不過現在有很多orm操作框架,直接在項目中建表操作也是相當地easy的。

      大概的步驟就是:1,建立好數據庫如test.db;

                                       2,把建立好的數據庫test.db放到項目本地文件夾;

                                       3,對數據庫進行操作。

     下面是操作的部分代碼(我的數據庫是放在res/raw文件夾下的):

首先把數據庫保存到內存中:

public class dbSaveToLocal {

//數據庫存儲路徑,當然也可以保存到sd卡中 String filePath = "data/data/com.ldm.cn/test.db";
//數據庫存放的文件夾 data/data/com.ldm.cn下 String pathStr = "data/data/com.ldm.cn";
SQLiteDatabase database;
public SQLiteDatabase getDatabase(Context context){
System.out.println("filePath:"+filePath);
File file=new File(filePath);
//查看數據庫文件是否存在
if( file.exists(){Log.i("test", "存在數據庫"); //存在則直接返回打開的數據庫
return SQLiteDatabase.openOrCreateDatabase(file, null);
}else{
//不存在先創建文件夾
File path=new File(pathStr);
if (path.mkdir()){
Log.i("test", "創建成功"); }else{
Log.i("test", "創建失敗"); };
try {

      //得到數據庫的輸入流  
      InputStream is=getResources().openRawResource(R.raw.xx);  
      Log.i("test", is+"");
      //用輸出流寫到SDcard上面  
      FileOutputStream fos=new FileOutputStream(file);  
      //創建byte數組  用于1KB寫一次  
      byte[] buffer=new byte[1024];  
      int count = 0;  
      while((count = is.read(buffer))>0){  
        fos.write(buffer,0,count);  
      }  
      //最后關閉就可以了  
      fos.flush();  
      fos.close();  
      is.close();  
    } catch (IOException e) {  
      // TODO Auto-generated catch block  
      e.printStackTrace();  
      return null;
    }  
    //就可以返回數據庫了  
    return openDatabase(context);  
  }  

}
}</pre>


接下來有了數據庫了,就可以在需要操作的地方用代碼操作數據庫中相應的數據表了。當然我們有時在項目中已經建立好數據庫, 我們可以把單個的數據表文件(如json/xml等)放在raw下面,然后通過文件流把內容存到數據庫中對應的表格中,然后再操作數據。

 本文由用戶 f663x 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!