0
因此,我有一个名为DatabaseHandler的类继承SQLiteOpenHelper。这个班负责管理将数据从联机数据库复制到手机的数据库。现在,问题在于,当我调用它的getQuestionsCount()
方法时,它正如名称所示,计算项目的数量,它会崩溃。它在调用其getReadableDatabase()
方法的线路上崩溃。它告诉我它有一个IllegalStateException。这是怎么回事?在Android中打开SQLite数据库时出现非法状态异常
关于崩溃活动的代码。检查是否已经存储的使用问题:
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
if(db.getQuestionsCount() == 0)
if(!isNetworkAvailable() || !canConnectToServer())
return -2;
else
if(!isNetworkAvailable() || !canConnectToServer())
return -3;
部分我的数据库处理器类:在的onCreate(
public class DatabaseHandler extends SQLiteOpenHelper
{
...
public DatabaseHandler(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
...
@Override
public void onCreate(SQLiteDatabase db)
{
String CREATE_QUESTIONS_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_QUESTIONS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_QUESTION + " TEXT NOT NULL,"
+ KEY_CATEGORY + " INTEGER NOT NULL," + KEY_ANSWER_1 + " TEXT NOT NULL,"
+ KEY_ANSWER_2 + " TEXT NOT NULL," + KEY_ANSWER_3 + " TEXT NOT NULL,"
+ KEY_ANSWER_4 + " TEXT NOT NULL," + KEY_DATE_POSTED + " TEXT NOT NULL)";
db.execSQL(CREATE_QUESTIONS_TABLE);
db.close();
}
...
public int getQuestionsCount()
{
String countQuery = "SELECT * FROM " + TABLE_QUESTIONS;
SQLiteDatabase db = this.getReadableDatabase(); //<-- ERROR ON THIS LINE
Cursor cursor = db.rawQuery(countQuery, null);
int count = cursor.getCount();
cursor.close();
// return count
return count;
}
}
谢谢,it pr可能会在以后导致一个错误仍然,但仍然有一个错误,说'SQLiteDatabase db = this.getReadableDatabase();'这就是错误来自 – rdelfin 2013-05-04 00:35:29
我改变了问题。谢谢! – rdelfin 2013-05-04 00:37:23
我编辑了答案。 – 2013-05-04 00:40:25