這裏有2個思路android
1.先在本地建立一個能支持android使用的sqlite數據庫文件,啓動時,用現成的sqlite的二進制文件進行直接copy到Android系統的數據庫路徑sql
2.能夠考慮在第一次啓動時,執行數據庫初始化的sql文件.數據庫
1.在本地準備android能使用的sqlite數據庫文件
app
使用sqlite數據庫管理工具,看我的愛好(SQLite Database Browser ,Navicat Premium,)ide
打開數據庫,建立"android_metadata"數據表工具
- CREATE TABLE "android_metadata" ("_id" INTEGER PRIMARY KEY AUTOINCREMENT,"locale" TEXT DEFAULT 'en_US');//建立表
- INSERT INTO "android_metadata" VALUES (1,'en_US');//插入值
建立其餘應用須要的表..此處省略.this
2.複製文件到應用中.spa
把第一步建立的數據庫文件複製到應用中的assets文件夾, asserts文件夾的路徑以下:.net

而後建立DateBaseHelper extends SQLiteOpenHelper的類文件.sqlite
代碼以下:
- public class DataBaseHelper extends SQLiteOpenHelper {
-
- private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";
- private static String DB_NAME = "myDBName";
- private SQLiteDatabase myDataBase;
- private final Context myContext;
-
-
-
-
-
- public DataBaseHelper(Context context) {
- super(context, DB_NAME, null, 1);
- this.myContext = context;
- }
-
-
-
-
- public void createDataBase()throws IOException {
- boolean dbExist = checkDataBase();
- if (dbExist) {
-
- } else {
-
-
- this.getReadableDatabase();
- try {
- copyDataBase();
- } catch (IOException e) {
- throw new Error("Error copying database");
- }
- }
- }
-
-
-
-
-
- private boolean checkDataBase() {
- SQLiteDatabase checkDB = null;
- try {
- String myPath = DB_PATH + DB_NAME;
- checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
- } catch (SQLiteException e) {
-
- }
-
- if (checkDB != null) {
- checkDB.close();
- }
- return checkDB != null ? true : false;
- }
-
-
-
-
-
-
- private void copyDataBase()throws IOException {
-
- InputStream myInput = myContext.getAssets().open(DB_NAME);
-
- String outFileName = DB_PATH + DB_NAME;
-
- OutputStream myOutput = new FileOutputStream(outFileName);
-
- byte[]buffer = new byte[1024];
- int length;
- while ((length = myInput.read(buffer)) > 0) {
- myOutput.write(buffer, 0, length);
- }
-
-
- myOutput.flush();
- myOutput.close();
- myInput.close();
- }
-
- public void openDataBase()throws SQLException {
-
- String myPath = DB_PATH + DB_NAME;
- myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
- }
-
- @Override
- public synchronized void close() {
- if (myDataBase != null)
- myDataBase.close();
- super.close();
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {}
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
-
-
-
- }
3.如今咱們能夠建立DateBaseHelper的實現操做了.
createDataBase() //建立
openDataBase()//打開只讀數據庫
記得要更改"YOUR_PACKAGE"爲你的應用的包名
如:com.examplename.myapp
大概代碼以下:
- ...
- DataBaseHelper myDbHelper = new DataBaseHelper();
- myDbHelper = new DataBaseHelper(this);
- try {
- myDbHelper.createDataBase();
- } catch (IOException ioe) {
- throw new Error("Unable to create database");
- }
- try {
- myDbHelper.openDataBase();
- } catch (SQLException sqle) {
- throw sqle;
- }
- ...