2

1つのカーソルを使用してデータベースから2列のデータを取得するにはどうすればよいですか....今、一度に2つのカーソルを使用しています

ArrayList<String> sender_array = new ArrayList<String>();
ArrayList<String> body_array = new ArrayList<String>();


messagedb=ListView.this.openOrCreateDatabase("message",0, null);
    messagedb.execSQL("CREATE TABLE IF NOT EXISTS tab2(sender INT(13),body varchar)");

Cursor  cur1=mydb.rawQuery("select * from tab2", null);

    while(cur.moveToNext())
    {
        String sender1=cur.getString(cur.getColumnIndex("sender"));
                    sender_array.add(sender1);
    }
    cur1.close();
Cursor  cur2=mydb.rawQuery("select * from tab2", null);

    while(cur.moveToNext())
    {
        String body1=cur.getString(cur.getColumnIndex("body"));
                    body_array.add(body1);
    }
    cur2.close();

    messagedb.close();

1 つのカーソルを使用してリスト ビューをポップアウトするにはどうすればよいですか?

4

2 に答える 2

2
Cursor  cur=mydb.rawQuery("select sender, body from tab2", null);
while(cur.moveToNext())
{
    String sender = cur.getString(0);
    String body = cur.getString(1);
}
cur.close();

または、後で列の順序を変更することにした場合、これはより安全です

Cursor  cur=mydb.rawQuery("select sender, body from tab2", null);
while(cur.moveToNext())
{
    String sender = cur.getString(cur.getColumnIndex("sender"));
    String body = cur.getString(cur.getColumnIndex("body"));
}
cur.close();
于 2012-07-01T15:26:06.800 に答える
0

次のように 1 つの Cursor を使用します。

Cursor  cur=mydb.rawQuery("select sender, body from tab2", null); 

アップデート:

ArrayList は必要ありません。Cursor を直接 SimpleCursorAdapter にロードし、このアダプターを使用してデータを ListView にロードできます。

SimpleCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to)

次に、アダプターを ListView に設定します。

ListView.setAdapter(your_SimpleCursorAdapter)
于 2012-07-01T15:05:09.527 に答える