我正在尝试将我的两列DB中的所有数据都返回到两个不同的TextViews
。在一次尝试中,我可以返回所有数据,但它只在一个TextView
中,在第二次尝试中,我可以将它放入两个TextViews
,但它只返回数据库中的第一行。首先尝试:
//--- 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);
}
任何帮助?
答案 0 :(得分:0)
如果循环遍历游标中的所有行,则第一次尝试将起作用。
Here is an example from this link
String arr[]=new String[4];
i=0;
cur.moveToFirst();
while (cur.isAfterLast() == false)
{
arr[i] = cur.getString(0);
i++;
cur.moveToNext();
}
答案 1 :(得分:0)
你必须遍历游标,一次一行,然后像这样使用GetString语法:
String mId = cursor.getString(cursor.getColumnIndex(COLUMN_ID));
其中COLUMN_ID是sqlite数据库中列的名称