Android系列之SQLite與Android Studio的資料互動
阿新 • • 發佈:2019-02-11
一、把db放在res的下方創一個raw資料夾,裡面用來放db
二、創一個DbHelper類,實際程式碼如下:
三、然後再相同的目錄下創一個DbManager類,就可以了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) { } }
四、最後在你第一個開始執行的activity中,寫下以下程式碼就完成互動了(呼叫)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(); } }
DbManager dbManager=new DbManager(getApplicationContext());
dbManager.openDataBase();