The*_*ing 6 sqlite android sqliteopenhelper
所以基本上我两次查询数据库.我不明白这个错误究竟来自哪里,因为我没有在任何地方关闭数据库.返回错误的代码就是这样运行的.我查了一下,我刚看到像我这样的案子.
BeaconHandler pullAllDB = new BeaconHandler(this);
try {
List<Beacon> beaconsShown = pullAllDB.getAllBeacons();
for (final Beacon bn : beaconsShown) {
try {
int messageCount = pullAllDB.getMessageCount();
Log.d("Message", messageCount + " Messages Found");
if (messageCount > 0) {
//Do Something
} else {
// Do Nothing
}
}
catch (Exception e) {
e.getStackTrace();
Log.e("Message", e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及执行查询的代码......
public int getBeaconsCount() {
String countQuery = "SELECT * FROM " + TABLE_BASIC_BEACON;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
public int getMessageCount() {
String mcountQuery = "SELECT * FROM " + MESSAGE_BEACON;
SQLiteDatabase mdb = this.getReadableDatabase();
Cursor mcursor = mdb.rawQuery(mcountQuery, null);
mcursor.close();
// return count
return mcursor.getCount();
}
Run Code Online (Sandbox Code Playgroud)
Nic*_*las 19
如果收到错误,您应该发布一个logcat.它有助于查看导致问题的线路.
来自Android文档.
关()
关闭Cursor,释放所有资源并使其完全无效.
mcursor.getCount()关闭它后,您的来电可能会导致错误
也许尝试这样的事情.
int count = mcursor.getCount();
mcursor.close();
// return count
return count ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17308 次 |
| 最近记录: |