日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Sqlite 数据初始化

發布時間:2023/12/18 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Sqlite 数据初始化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

android系統下每個程序的數據存放在 /data/data/(package name)/ 目錄下,數據庫則是在/dababases/目錄下..
所以,你只要用FileInputStream讀取原數據庫,再用FileOutputStream把讀取到的東西寫入到那個目錄就可以了..

操作方法:1. 把原數據庫包括在項目源碼的 res/raw 目錄下.
2.創建一個類來控制database..如下:

?

public?class?DatabaseManager{
????????private?final?int?BUFFER_SIZE?=?400000;
????????public?static?final?String?DB_NAME?=?"myDatabase.db";?//保存的數據庫文件名
????????public?static?final?String?PACKAGE_NAME?=?"com.android.ImportDBTest";//包名
????????public?static?final?String?DB_PATH?=?"/data"
????????????????????????+?Environment.getDataDirectory().getAbsolutePath()?+?"/"
????????????????????????+?PACKAGE_NAME;??//在手機里存放數據庫的位置

????????private?SQLiteDatabase?database;
????????private?Context?context;

????????DBManager(Context?context)?{
????????????????this.context?=?context;
????????}

????????public?void?openDatabase()?{
????????????????this.database?=?this.openDatabase(DB_PATH?+?"/"?+?DB_NAME);
????????}

????????private?SQLiteDatabase?openDatabase(String?dbfile)?{
????????????????try?{
????????????????????????if?(!(new?File(dbfile).exists()))?{  //判斷數據庫文件是否存在,若不存在則執行導入,否則直接打開數據庫
????????????????????????????????InputStream?is?=?this.context.getResources().openRawResource(
????????????????????????????????????????????????R.raw.myDatabase);?//欲導入的數據庫
????????????????????????????????FileOutputStream?fos?=?new?FileOutputStream(dbfile);
????????????????????????????????byte[]?buffer?=?new?byte[BUFFER_SIZE];
????????????????????????????????int?count?=?0;
????????????????????????????????while?((count?=?is.read(buffer))?>?0)?{
????????????????????????????????????????fos.write(buffer,?0,?count);
????????????????????????????????}
????????????????????????????????fos.close();
????????????????????????????????is.close();
????????????????????????}
????????????????????????SQLiteDatabase?db?=?SQLiteDatabase.openOrCreateDatabase(dbfile,
????????????????????????????????????????null);
????????????????????????return?db;
????????????????}?catch?(FileNotFoundException?e)?{
????????????????????????Log.e("Database",?"File?not?found");
????????????????????????e.printStackTrace();
????????????????}?catch?(IOException?e)?{
????????????????????????Log.e("Database",?"IO?exception");
????????????????????????e.printStackTrace();
????????????????}
????????????????return?null;
}

?

然后在需要用到數據庫的時候,用實例化一個DatabaseManager類,調用其openDatabase方法就可以返回一個SQLiteDatabase對象了..如下:

?

SQLiteDatabase?db?=?new?DBManager(this).openDatabase();

?

轉載于:https://www.cnblogs.com/yingql/archive/2011/12/12/2284841.html

總結

以上是生活随笔為你收集整理的Android Sqlite 数据初始化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。