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

歡迎訪問 生活随笔!

生活随笔

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

Android

[Android]发布Sqlite数据库

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

前言

  如何將Sqlite數據庫與apk一同發布?剛開始用時有朋友告訴我直接用adb命令手工發布,或者寫sql語句動態創建,感覺不太理想。得益于銀河使者實現基于Android的英文電子詞典這篇文章,再經過文章2的補充以及實踐得以完成,感謝大家的分享!

文章

  1.  實現基于Android的英文電子詞典

  2.  Using your own SQLite database in Android applications

  3.  Android Asset,res/raw限制文件大小UNCOMPRESS為1MB

聲明

  歡迎轉載,但請保留文章原始出處:)

    博客園:http://www.cnblogs.com

    農民伯伯: http://www.cnblogs.com/over140/??

正文

  一、準備

    1.1  準備目錄

      在Android項目工程res下新建raw文件夾,在這個文件夾里面的文件不會被編譯壓縮。

    1.2  準備數據庫

      新建或拷貝一個數據庫,然后打開,依次執行以下兩條SQL語句:

CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'zh_CN')INSERT INTO "android_metadata" VALUES ('zh_CN')

      這個表用途不太清楚,但是如果用Android sqlite API創建一個數據庫的話,會默認帶上這個表,而且少了還不行,會報錯。

  二、實現代碼

??? /**
???? * 是否完成初始化
????
*/
???
private static boolean isInit = false;

???
???
/**
???? * 初始化數據庫
???? *
@param context
????
*/
???
synchronized public static void init(Context context)
??? {
???????
if(isInit)
???????????
return;
???????
// 輸出路徑
??????? String outFileName = DATABASE_PATH + DATABASE_NAME;

???????
//檢測是否已經創建
??????? File dir = new File(outFileName);
???????
if(dir.exists())
???????????
return;

???????
// 檢測/創建數據庫的文件夾
??????? dir = new File(DATABASE_PATH);

???????
if (!dir.exists())
??????????? dir.mkdir();

??????? InputStream input
= null;
??????? OutputStream output
= null;
???????
// 從資源中讀取數據庫流
??????? input = context.getResources().openRawResource(R.raw.db);

???????
try {
??????????? output
= new FileOutputStream(outFileName);

???????????
// 拷貝到輸出流
??????????? byte[] buffer = new byte[2048];
???????????
int length;
???????????
while ((length = input.read(buffer)) > 0) {
??????????????? output.write(buffer,
0, length);
??????????? }
??????? }
catch (FileNotFoundException e) {
??????????? e.printStackTrace();
??????? }
catch (IOException e) {
??????????? e.printStackTrace();
??????? }
finally {
???????????
// 關閉輸出流
??????????? try {
??????????????? output.flush();
??????????????? output.close();
??????????? }
catch (IOException e) {
??????????? }
???????????
// 關閉輸入流
??????????? try {
??????????????? input.close();
??????????? }
catch (IOException e) {
??????????? }
??????? }
??????? isInit
= true;
??? }

    代碼說明:

      a).  在主窗口(Activity)中調用一次即可,隨后直接用SQLiteDatabase.openDatabase操作使用即可。

結束

   注意文章3,但沒有測試過,不知道后續的版本會不會改進這個數據庫發布的問題。

轉載于:https://www.cnblogs.com/bmate/archive/2012/09/05/2672020.html

總結

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

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