公司刚分配的任务说需要用内置sqllite数据库开发一个app,这两天找了一下资料,终于成功。下面贴一下代码。
第一步,首先,在你的项目中res文件夹下,新建一个raw文件夹,然后把你建好的sqllite数据库放在这个文件夹下面。
第二部,新建一个DatabaseHelper类,继承自带的SQLiteOpenHelper
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_PATH = "/storage/sdcard0/"; //你想把sqllite放在手机中的位置
private static final String DATABASE_NAME = "dhxj.db"; //sqllite数据库名称
private static final int DATABASE_VERSION = 3;
private SQLiteDatabase database ;
public Context context;
public DatabaseHelper(Context context) {
super(context, DATABASE_PATH+"/"+DATABASE_NAME, null, DATABASE_VERSION);
setContext(context);
//openDatabase();
}
public void setContext(Context context){
this.context = context;
}
public Context getContext(){
return context;
}
public SQLiteDatabase getDatabase() {
return database;
}
@Override
public void onCreate(SQLiteDatabase db){
}
public SQLiteDatabase openDatabase() {
try {
// dhxj.db文件的绝对路径
String databaseFilename = DATABASE_PATH + "/" + DATABASE_NAME;
File dir = new File(DATABASE_PATH);
// 如果/storage/sdcard0/路径不存在,则创建这个路径
if (!dir.exists())
dir.mkdir();
// 如果/storage/sdcard0/路径下存在dhxj.db这个数据库,把这个数据库删除
//
/* if((new File(databaseFilename)).exists())
{
new File(databaseFilename).delete();
}*/
//如果/storage/sdcard0/路径下不存在dhxj.db这个数据库,则将项目raw文件夹下的dhxj.db复制到你设置的绝对路径中
if (!(new File(databaseFilename)).exists()) {
// 获得封装dictionary.db文件的InputStream对象
InputStream is = getContext().getResources().openRawResource(
R.raw.dhxj);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte[] buffer = new byte[8192];
int count = 0;
// 开始复制dhxj.db文件
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
// 打开/storage/sdcard0/目录中的dhxj.db文件
database = SQLiteDatabase.openOrCreateDatabase(
databaseFilename, null);
} catch (Exception e) {
}
finally{
}
return database;
}
第三步,在需要调用数据库的时候加上下面的代码
DatabaseHelper mOpenHelper = new DatabaseHelper(this);
SQLiteDatabase db = mOpenHelper.openDatabase();
现在你就可以通过db对内置的sqllite数据库进行操作了