【发布时间】:2012-08-16 02:54:23
【问题描述】:
我正在尝试使用之前填充的 sqlite 数据库中的查询来检索数据。但由于某种原因,查询 returnscursor 没有行。
所以这是我尝试检索数据的部分:
database.open();
Cursor cursor = database.getComponentData("CONTROLS", null, null);
int test = cursor.getCount();//This is the part where i test through the eclipse debugger whether there is any rows return
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
get.append("Video controls : "+cursor.getString(1)+" Audio Controls : "+cursor.getString(2)+" Reader controls : "+cursor.getString(3));
cursor.moveToNext();
}
cursor.close();
Cursor cursor1 = database.getComponentData("LIST", new String[]{"'URL'"},"AUDIO");
get.append("Video list : ");
cursor1.moveToFirst();
while (!cursor1.isAfterLast()) {
get.append(" "+cursor1.getString(1)+" "+cursor1.getString(2)+" "+cursor1.getString(3));
cursor1.moveToNext();
}
cursor1.close();
database.close();
这是我查询的数据库适配器中的部分。
public Cursor getComponentData(String whichTable,String[] whichColumn,String whichSection) {
Cursor c = null;
if(whichSection!=null)
{
return database.query(whichTable, whichColumn,"SECTION = '"+whichSection+"'",null, null, null, null);
}
else{
return database.query(whichTable, whichColumn,null,null, null, null, null);
}
}
这是我之前插入数据库的部分:
database.open();
ContentValues control = new ContentValues();
control.put("VIDEO_CONTROLS",video_control);
control.put("AUDIO_CONTROLS",audio_control);
control.put("READER_CONTROLS",book_control);
control_long =database.insertNewControl(control);
ContentValues temp_list = new ContentValues();
a_p=audio_playlist.split(",");
v_p=video_playlist.split(",");
b_p=booklist.split(",");
for(int i =0;i<a_p.length;i++){
temp_list.put("NAME", "test");
temp_list.put("URL", a_p[i]);
temp_list.put("SECTION", "AUDIO");
list_long= database.insertNewListRow(temp_list);
}
for(int i =0;i<v_p.length;i++){
temp_list.put("NAME", "test");
temp_list.put("URL", v_p[i]);
temp_list.put("SECTION", "VIDEO");
list_long= database.insertNewListRow(temp_list);
}
for(int i =0;i<b_p.length;i++){
temp_list.put("NAME", "test");
temp_list.put("URL", b_p[i]);
temp_list.put("SECTION", "READER");
list_long= database.insertNewListRow(temp_list);
}
database.close();
在适配器中插入方法:
public Long insertNewControl(ContentValues controls_values) {
return database.insert("CONTROLS", null, controls_values);
}
public Long insertNewListRow(ContentValues list_values){
return database.insert("LIST", null, list_values);
}
感谢阅读。
编辑:
忘了提这一点,如果我在插入这些行后立即从数据库中query(),我将能够取出行。但是我要在close() 和open() 之后再次查询这些行, 游标不返回任何行。
【问题讨论】:
-
您是否确认数据在数据库中(BASICS)?
-
如insert()是否返回非“-1”值?
-
或者在eclipse中使用sqlite工具检查数据库。
-
虽然我还没有使用 sqlite 工具但是对于 insert() 返回的内容,上次我检查它没有返回错误(-1)
-
请问我在哪里可以找到这样一个sqlite工具来检查我的数据库?
标签: java android sqlite cursor