gpt4 book ai didi

java - Sqlite 查询返回包含 0 行的游标

转载 作者:行者123 更新时间:2023-12-01 15:13:29 25 4
gpt4 key购买 nike

我正在尝试使用查询从先前填充的 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()再次,光标没有返回任何行。

最佳答案

删除了我关于光标(第一个光标)的答案

cursor1 返回 null,因为您不需要在列名称之间放置 ',只需放置 "URL" 而不是 "'URL'"

也不需要测试计数,moveToFirst()本身返回一个 boolean 值,如果光标为null,它将返回false。所以你需要做的是,

if (cursor.moveToFirst()) {
//do what you want
}

关于java - Sqlite 查询返回包含 0 行的游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com