前端之家收集整理的这篇文章主要介绍了
自定义SQlite数据文件存放位置,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
要在Android系统中操作
sqlite
数据库,是通过Android的核心类
sqliteDatabase类来实现的,通常情况下为了
数据库升级的需要以及使用方便,我们会选择继承
sqliteOpenHelper抽像类,但是
sqliteOpenHelper会将
数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果你想使用已经存在的
数据库文件也就是说
数据库会和程序一起发布,就得通过使用
sqliteDabase的静态
方法OpenOrCreateDatabase()
方法来得到
sqliteDabase对象,下面是一个具体操作类: package net.my.dao; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import net.my.jokebook.R; import android.app.Activity; import android.content.Context; import android.database.
sqlite.
sqliteDatabase; public class DBHelper { //得到SD卡路径 private final String DATABASE_PATH = android.os.Environment .getExternalStorageDirectory().getAbsolutePath() + "/joke"; private final Activity activity; //
数据库名 private final String DATABASE_FILENAME; public DBHelper(Context context) { // TODO Auto-generated constructor stub //这里直接给
数据库名 DATABASE_FILENAME = "jokebook.db3"; activity = (Activity)context; } //得到操作
数据库的对象 public
sqliteDatabase openDatabase() { try { boolean b = false; //得到
数据库的完整路径名 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; //将
数据库文件从资源
文件放到合适地方(资源
文件也就是
数据库文件放在项目的res下的raw目录中) //将
数据库文件复制到SD卡中 File dir = new File(DATABASE_PATH); if (!dir.exists()) b = dir.mkdir(); //判断是否存在该
文件 if (!(new File(databaseFilename)).exists()) { //不存在得到
数据库输入流对象 InputStream is = activity.getResources().openRawResource( R.raw.jokebook); //创建
输出流 FileOutputStream fos = new FileOutputStream(databaseFilename); //将数据
输出 byte[] buffer = new byte[8192]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer,count); } //
关闭资源 fos.close(); is.close(); } //得到
sqlDatabase对象
sqliteDatabase database =
sqliteDatabase.openOrCreateDatabase( databaseFilename,null); return database; } catch (Exception e) { System.out.println(e.getMessage()); } return null; } } 写完这个类之后,就能得到
sqliteDatabase对象,就能对
数据库操作了
原文链接:https://www.f2er.com/sqlite/201339.html