通过android的SQLiteOpenHelper类的源码,可以看到SQLiteOpenHelper类的getWritableDatabase
这个接口实际上调用的是Context的openOrCreateDatabase方法,而这个方法是不支持带路径的数据库名
称的,也就是说,用这个方法创建的数据库只能放在/data/data/包名称/ 目录下;要想在SD卡上创建数据库
,我们可以调用SQLiteDatabase类的openOrCreateDatabase方法,这个方法是支持带路径的数据库名称的。
那么下面的问题就是如何判断是否存在SD卡,已经如何获取SD卡的路径了?
判断是否存在SD卡:
android.os.Environment.MEDIA_MOUNTED.equals(
android.os.Environment.getExternalStorageState())
获取SD卡路径:String dbPath=android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath()
在SD卡上创建数据库方法如下:
String dbPath=android.os.Environment.getExternalStorageDirectory()
.getAbsolutePath()+"/database"
File dbp=new File(dbPath)
File dbf=new File(dbPath+"/"+"test.db")
if(!dbp.exists()){
dbp.mkdir()
}
//数据库文件是否创建成功
boolean isFileCreateSuccess=false
if(!dbf.exists()){
try{
isFileCreateSuccess=dbf.createNewFile()
}
catch(IOException ioex){
}
}
else{
isFileCreateSuccess=true
}
if(isFileCreateSuccess)
db = SQLiteDatabase.openOrCreateDatabase(dbf, mFactory)
为了简便起见,我们可以用上述方法重写SQLiteOpenHelper类的getWritableDatabase方法,
其他逻辑参照SQLiteOpenHelper类即可。最后别忘了,加入SD卡的读写权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>。
在sd卡上创建数据库通过android的sqliteopenhelper类的源码,可以看到sqliteopenhelper类的getwritabledatabase
这个接口实际上调用的是context的openorcreatedatabase方法,而这个方法是不支持带路径的数据库名
称的,也就是说,用这个方法创建的数据库只能放在/data/data/包名称/
目录下;要想在sd卡上创建数据库
,我们可以调用sqlitedatabase类的openorcreatedatabase方法,这个方法是支持带路径的数据库名称的。
第一步:新建一个Android工程,命名为SQLiteDatabaseDemo.第二步:创建一个新的类BooksDB.java这个类要继承于android.database.sqlite.SQLiteOpenHelper抽象类,我们要实现其中两个方法:onCreate(),onUpdate.
第三步:修改main.xml布局如下,由两个EditText和一个ListView组成
第四步:修改SQLiteDatabaseDemo
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)