为何在onCreate里面 创建表以后 就把 数据库关掉呢,你关掉了 再去操作数据库应该是无法成功的。
解决方案 »
- 急 啊:::soap2调用webservice SoapFault - faultcode: 'soapenv:Server' faultstring: 'I
- Android 跨布局拖动控件的问题(已附源码,希望高手改善)
- android 求解
- 在PC模拟器上怎么测试应用的网络异常处理?
- setonclicklistener 无法复写onclick
- 文件获取时间出问题了,求救
- 在listview点击item改变imageview的状态
- 请问有没有好的切图软件?
- android 模拟登录教务系统 获取课程表 出错
- android apk内容资源
- 安卓开发:页面间跳转但不创建页面
- AlarmManager休眠唤醒问题
那为什么 insertByDto里面把 数据库关掉后下次还能操作呢?
/**
* Close any open database object.
*/
public synchronized void close() {
if (mIsInitializing) throw new IllegalStateException("Closed during initialization"); if (mDatabase != null && mDatabase.isOpen()) {
mDatabase.close();
mDatabase = null;
}
} public SQLiteDatabase getWritableDatabase() {
synchronized (this) {
return getDatabaseLocked(true);
}
}
-- http://www.server110.com/sqlite/201403/8007.html
-- http://blog.csdn.net/sdsxleon/article/details/18259973
第二问题:如果insertByDto是定义在SQLiteOpenHelper继承类的外部,则getWritableDatabase()处无法通过编译,如果是在内部当你第一次执行getWritableDatabase()时,将调用oncreate()方法,而你在这里关闭了数据库,getWritableDatabase()无法返回数据库实例,报异常。如果你在oncreate()中掉close,getWritableDatabase()返回实例成功,你在返回的实例上进行close操作当然不会报异常。不知道我说明白没有。
第一次调用 getWritableDatabase或getReadableDatabase 会 调用 onCreate方法,onCreate里的DB不用关闭,否则getWritableDatabase 会报错。