将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();
}