将SQLite数据库中的所有数据返回到Android中的两列中

将SQLite数据库中的所有数据返回到Android中的两列中,android,sqlite,Android,Sqlite,我试图将两列数据库中的所有数据返回到两个不同的textview。在一次尝试中,我可以返回所有数据,但它只在一个文本视图中,在第二次尝试中,我可以将其放入两个文本视图中,但它只返回数据库中的第一行。第一次尝试: //--- Returns only first result //--- DB Method public String[] getPres2() { String[] columns = new String[] { KEY_PRES, KEY_YEAR};

我试图将两列数据库中的所有数据返回到两个不同的
textview
。在一次尝试中,我可以返回所有数据,但它只在一个
文本视图中
,在第二次尝试中,我可以将其放入两个
文本视图中
,但它只返回数据库中的第一行。第一次尝试:

    //--- Returns only first result

//--- DB Method
public String[] getPres2() {
    String[] columns = new String[] { KEY_PRES, KEY_YEAR};
    Cursor cursor = db.query(DB_TABLE, columns, null, null, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
        String pstYr[] = new String[2];
        pstYr[0] = cursor.getString(0);
        pstYr[1] = cursor.getString(1);
        cursor.close();
        this.db.close();
        return pstYr;
    }
    return null;

}

//--- in the activity
public void DBMethod2() {
    dba = new DBAdapter(this);
    dba.open();
    String[] pst_Str = dba.getPres2();
    dba.close();
    pst_TV.setText(pst_Str[0]);
    yrs_TV.setText(pst_Str[1]);

}
第二次尝试:

    //--- Returns all results, but only in a single TextView
//--- DB Method
public String getPres3() {
    String[] columns = new String[] { KEY_PRES, KEY_YEAR};
    Cursor cursor = db.query(DB_TABLE, columns, null, null, null, null, null);
    String result = "";

    int iPrs = cursor.getColumnIndex(KEY_PRES);
    int iYr = cursor.getColumnIndex(KEY_YEAR);

    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()){
        result = result + cursor.getString(iPrs) + "\n" + cursor.getString(iYr) +   "\n" + "\n";
    }

    return result;

}


//--- In Activity
public void DBMethod3() {
    dba = new DBAdapter(this);
    dba.open();
    String pstY_Str = dba.getPres3();
    dba.close();
    pst_TV.setText(pstY_Str);

}

有什么帮助吗?

如果您循环浏览光标中的所有行,您的第一次尝试将有效


您必须遍历光标,每次遍历一行,然后使用GetString语法,如下所示:

String mId=cursor.getString(cursor.getColumnIndex(COLUMN_ID))


其中COLUMN_ID是sqlite数据库中列的名称

我无法让您的解决方案工作。首先,它只返回第一个DB行,其次,只有第一个TextView中有一个字符串,第二个TextView是空的。我想你是说:
public string[]getPres(){string[]columns=new string[]{KEY\u PRES,KEY\u YEAR};Cursor Cursor=DB.query(DB\u TABLE,columns,null,null,null,null,null);String result[]=新字符串[2];for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){result[0]=cursor.getString(cursor.getColumnIndex(KEY_PRES));result[1]=cursor.getString(cursor.getColumnIndex(KEY_YEAR));}返回null;}
…我似乎也无法使用它。不过没关系,因为我用另一种方法解决了这个问题。我现在不使用DB,而是创建一个表并动态添加包含两列的行。
 String arr[]=new String[4];
 i=0;

 cur.moveToFirst();
 while (cur.isAfterLast() == false) 
 {
     arr[i]  = cur.getString(0);
     i++;
     cur.moveToNext();
 }