关于SQLite数据库随APK一起发布
2013-07-02 20:26
274 查看
文章部分内容取自网络,特此说明!
SQLite数据库随APK一起发布的基本步骤总结:
使用SQLite工具创建数据库及其表,除了软件本身要用到的表之外,要多加一个android_metadata表,否则会报错,原因可能在于android系统会通过这个表确定locale方面的信息。
在raw或asset文件夹中加入建好的数据库;放在这两个文件夹是因为它们在编译时不会被改变,可以直接使用IO进行复制,以备后用。
在某个activity或service中完成数据库复制的操作;一般情况下在欢迎界面完成;代码如下:
完成复制之后,使用SQLiteDatabase类的静态方法openDatabase(参数)或者openOrCreateDatabase(参数)等方法获得一个SQLiteDatabase的实例,然后用此实例进行数据库的操作
SQLite数据库随APK一起发布的基本步骤总结:
使用SQLite工具创建数据库及其表,除了软件本身要用到的表之外,要多加一个android_metadata表,否则会报错,原因可能在于android系统会通过这个表确定locale方面的信息。
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'zh_CN') INSERT INTO "android_metadata" VALUES ('zh_CN')
在raw或asset文件夹中加入建好的数据库;放在这两个文件夹是因为它们在编译时不会被改变,可以直接使用IO进行复制,以备后用。
在某个activity或service中完成数据库复制的操作;一般情况下在欢迎界面完成;代码如下:
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import com.android.qufu.dinner.MealActivityGroup; import com.android.qufu.dinner.R; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; public class Loggin extends Activity { public static String dbName="dinner.db";//数据库的名字 private static String DATABASE_PATH="/data/data/com.android.qufu.dinner/databases/";//数据库在手机里的路径 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); //判断数据库是否存在 boolean dbExist = checkDataBase(); if(dbExist){ }else{//不存在就把raw里的数据库写入手机 try{ copyDataBase(); }catch(IOException e){ throw new Error("Error copying database"); } } new Thread(new Runnable() { public void run() { while (b < 2) { try { if (b == 0) { Thread.sleep(20); b = 1; } else { Thread.sleep(50); } updateApp(); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } /** * 判断数据库是否存在 * @return false or true */ public boolean checkDataBase(){ SQLiteDatabase checkDB = null; try{ String databaseFilename = DATABASE_PATH+dbName; checkDB =SQLiteDatabase.openDatabase(databaseFilename, null, SQLiteDatabase.OPEN_READONLY); }catch(SQLiteException e){ } if(checkDB!=null){ checkDB.close(); } return checkDB !=null?true:false; }
* 复制数据库到手机指定文件夹下
* @throws IOException */ public void copyDataBase() throws IOException{ String databaseFilenames =DATABASE_PATH+dbName; File dir = new File(DATABASE_PATH); if(!dir.exists())//判断文件夹是否存在,不存在就新建一个 dir.mkdir(); FileOutputStream os = null; try{ os = new FileOutputStream(databaseFilenames);//得到数据库文件的写入流 }catch(FileNotFoundException e){ e.printStackTrace(); } InputStream is = this.getResources().openRawResource(R.raw.test);//得到数据库文件的数据流,其中test是数据库的名字 byte[] buffer = new byte[8192]; int count = 0; try{ while((count=is.read(buffer))>0){ os.write(buffer, 0, count); os.flush(); } }catch(IOException e){ } try{ is.close(); os.close(); }catch(IOException e){ e.printStackTrace(); } } }
完成复制之后,使用SQLiteDatabase类的静态方法openDatabase(参数)或者openOrCreateDatabase(参数)等方法获得一个SQLiteDatabase的实例,然后用此实例进行数据库的操作
this.db = SQLiteDatabase.openDatabase( "/data/data/com.hz.speakpractice/databases/speakpractice.db", null, SQLiteDatabase.OPEN_READONLY);
相关文章推荐
- 如何将SQLite数据库与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- Android菜鸟笔记-SQLite数据库和APK一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- Android开发中, 将apk和SQLite数据库一起打包发布 (没root手机)
- 如何将SQLite数据库与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- 如何将SQLite数据库(dictionary.db文件)与apk文件一起发布
- Util工具类 db文件和apk一起发布
- android数据库(随apk一起发布数据库)
- Android 开发中,如何将 SQLite 和 APK 一起打包发布
- Android -- sqlite数据库随apk发布
- Android开发中,如何将SQLite和APK一起打包发布
- 关于多个apk打包一起安装
- 读大学 究竟读什么? (关于应用程序apk的打包与发布到木蚂蚁市场上的问题)
- Android 开发中,如何将 SQLite 和 APK 一起打包发布