我在使用SQLiteOpenHelper类时遇到了一个问题。我在表中插入一行,然后尝试读取数据,我当时什么都没有得到(就在插入数据之后)。我只有在关闭活动后再重新打开时才会得到信息。
MyDB db = new MyDB(context);
db.insert(string1, string2, string3, string4);
现在在下一行代码中,如果我尝试读取我插入的内容。
List<String> list;
list=db.loadHandler();
列表是空的,直到我关闭活动并再次打开它。为什么会这样?
class MyDB extends SQLiteOpenHelper {
private static final int VERSION_BASEDATOS = 1;
private static final String NAME = "checkList.db";
private static final String TABLA_CHECK_LIST = "CREATE TABLE IF NOT EXISTS checkList" +
"(id INTEGER PRIMARY KEY AUTOINCREMENT, file TEXT, se TEXT, date TEXT, aux TEXT)";
public MyDB(Context context) {
super(context, NAME, null, VERSION_BASEDATOS);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLA_CHECK_LIST);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS checkList");
onCreate(db);
}
public boolean deleteDB(Context context){
return context.deleteDatabase(NAME);
}
public void insert(String file, String se, String date, String aux) {
SQLiteDatabase db = getWritableDatabase();
if(db != null){
ContentValues valores = new ContentValues();
valores.put("file", file);
valores.put("se", se);
valores.put("date", date);
valores.put("aux", aux);
db.insert("checkList", null, valores);
db.close();
}
}
public List<String> loadHandler() {
List<String> list = new ArrayList<String>();
String query = "Select*FROM checkList";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
while (cursor.moveToNext()) {
int result_0 = cursor.getInt(0);
String result_1= cursor.getString(1);
String result_2 = cursor.getString(2);
String result_3=cursor.getString(3);
String result_4=cursor.getString(4);
list.add(result_1+"%:&"+result_2+"%:&"+result_3+"%:&"+result_4);
}
cursor.close();
db.close();
return list;
}
public int getRowCount(){
String query = "Select*FROM checkList";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
return cursor.getCount();
}
public void deleteFirstRow()
{
SQLiteDatabase db = this.getWritableDatabase();
String where = "id < (select id from checkList order by id limit 15, 1)";
db.delete("checkList", where, null);
}
public void orderIt(){
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("VACUUM");
}
public String getLastHash(){
SQLiteDatabase db = this.getWritableDatabase();
String query = "Select*FROM checkList";
Cursor cursor = db.rawQuery(query, null);
cursor.moveToLast();
return cursor.getString(1);
}
}