sky-mxc 总结 转载注明出处:https://sky-mxc.github.io
对 sd卡上sqlite 数据库的操作
Android默认的数据库位置是在 datadatapackageNamedatabases目录下的; 有时候因为业务需要我们需要操作位于sd卡的数据库,就可以通过重写 Context类的方法来实现
重写 ContextWrapper
我们在创建SqliteOpenHelper实例的时候需要传入一个Context 实例,就是通过他来实现的
代码语言:javascript复制
public class DBContext extends ContextWrapper {
public static final String TAG = "DBContext";
public DBContext(Context base) {
super(base);
}
/**
* 返回 数据库文件
* 重写此方法 返回我们位于sd卡的数据库文件
* @param name
* @return
*/
@Override
public File getDatabasePath(String name) {
//位于 sd卡的数据库 初始化时已经创建好了
File file = new File(Environment.getExternalStorageDirectory().getPath() "/dbDemo",name);
return file;
}
/**
* Android 4.0后会调用此方法 还有一个2.3以前的方法就重写了,也没有那么底的版本了
* @param name
* @param mode
* @param factory
* @param errorHandler
* @return
*/
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name),factory);
return db;
}
}
DBHelper
代码语言:javascript复制DBHelper
public class DBHelper extends SQLiteOpenHelper {
public static final String TAG = "DBHelper";
private static final String NAME = "test.db";
private static final int VERSION = 1;
private static DBHelper dbHelpter;
public static DBHelper getDbHelpter(Context context){
if (dbHelpter == null){
dbHelpter = new DBHelper(context);
}
return dbHelpter;
}
private DBHelper(Context context) {
super(context, NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
使用
代码语言:javascript复制private void query(){
DBContext dbContext = new DBContext(this);
DBHelper helpter = DBHelper.getDbHelpter(dbContext);
SQLiteDatabase db = helpter.getWritableDatabase();
Cursor cu = db.query("table1", new String[]{"id", "name", "age"}, null, null, null, null, "id desc", null);
if (null != cu){
while (cu.moveToNext()){
int id = cu.getInt(cu.getColumnIndex("id"));
String name = cu.getString(cu.getColumnIndex("name"));
int age = cu.getInt(cu.getColumnIndex("age"));
Log.e(TAG, "query: id=" id ";name=" name ";age=" age);
}
cu.close();
}
}
参考博客
http://blog.csdn.net/liyulei316686082/article/details/7230709