源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android 数据库打包随APK发布的实例代码

  • 时间:2022-12-10 16:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android 数据库打包随APK发布的实例代码
其实很简单,就是把我们的数据库文件放到我们的手机里,所以不必局限在哪个地方写这个代码,在第一次创建数据库的时候可以,我觉得在软件起动页里效果更好一点,首先我们应该把事先写好的数据库文件比如 test.db放到res文件夹里的raw文件夹里,也可以放到assets里,因为这两个文件夹不会在生成APK的时候不会被压缩。 1,DataBaseUtil用于将raw中的db文件copy到手机中,代码如下
[u]复制代码[/u] 代码如下:
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import com.ata.app.R; /**  * copy数据库到apk包  *  * @author NGJ  *  */ public class DataBaseUtil {  private Context context;  public static String dbName = "Kao.db";// 数据库的名字  private static String DATABASE_PATH;// 数据库在手机里的路径  public DataBaseUtil(Context context) {   this.context = context;   String packageName = context.getPackageName();   DATABASE_PATH="/data/data/"+packageName+"/databases/";  }  /**   * 判断数据库是否存在   *   * @return false or true   */  public boolean checkDataBase() {   SQLiteDatabase db = null;   try {    String databaseFilename = DATABASE_PATH + dbName;    db = SQLiteDatabase.openDatabase(databaseFilename, null,SQLiteDatabase.OPEN_READONLY);   } catch (SQLiteException e) {   }   if (db != null) {    db.close();   }   return db != 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 = new FileOutputStream(databaseFilenames);// 得到数据库文件的写入流   InputStream is = context.getResources().openRawResource(R.raw.kao);// 得到数据库文件的数据流   byte[] buffer = new byte[8192];   int count = 0;   while ((count = is.read(buffer)) > 0) {    os.write(buffer, 0, count);    os.flush();   }   is.close();   os.close();  } }
2,在需要的activity中加入如下方法用于具体的copy操作
[u]复制代码[/u] 代码如下:
Java代码  privatevoid copyDataBaseToPhone() {          DataBaseUtil util = new DataBaseUtil(this);          // 判断数据库是否存在          boolean dbExist = util.checkDataBase();          if (dbExist) {              Log.i("tag", "The database is exist.");          } else {// 不存在就把raw里的数据库写入手机              try {                 util.copyDataBase();             } catch (IOException e) {                 thrownew Error("Error copying database");             }          }      } 
3,检测是否有SDCard,执行copy。(个人感觉可以不检测SD卡是否存在,但不检测似乎有个问题,程序原因?)
[u]复制代码[/u] 代码如下:
boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);   if(hasSDCard){    copyDataBaseToPhone();   }else{    showToast("未检测到SDCard");   }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部