使用说明:
出于安全角度,一般不推荐直接把数据库打包在项目里,应当放在服务器里用户下载后,加载到手机里。本文只适合用来参考。有问题地方欢迎指出。
1.先在res目录下建立一个文件夹raw,把数据库db放到raw里。
声明:权限
<uses-permission android:name="android.permission.RECEIVE_SMS" >
数据库名字和手机里的路径
public static String dbName="note.db";
private static String DATABASE_PATH="/data/data/com.example.julong.words( 相对路径 )/databases/";//数据库在手机里的路径
使用:加载db对象
//调用
SQLiteDatabase db;
db=SQLiteDatabase.openOrCreateDatabase("/data/data/com.example.julong.words/databases/note.db"(路径),null);
/**
* 将raw目录下的数据库复制到手机路径
*/
把数据库加载到手机里:
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 = MainActivity.this.getResources().openRawResource(R.raw.note);//得到数据库文件的数据流
// 分配接收缓冲区
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();
}
}
/**
* 判断手机文件夹是否有次数据库
*/
public boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String databaseFilename = DATABASE_PATH+dbName;
checkDB =SQLiteDatabase.openDatabase(databaseFilename, null,
SQLiteDatabase.OPEN_READONLY);
}catch(SQLException e){
}
if(checkDB!=null){
checkDB.close();
}
return checkDB !=null?true:false;
}
网友评论