0

アクティビティがあり、sqliteデータベースからデータを取得したいと考えています。それは機能しますが、私のアクティビティは最後の行のみを取得し、列全体は取得しません。列全体を取得するにはどうすればよいですか?

これは私のデータベースのコードです:

public String getName() {
String[] columns = new String[]{ KEY_ROWID, KEY_NAME };
Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null);
c.moveToFirst();
while(!c.isAfterLast()) {
String name = c.getString(c.getColumnIndex(KEY_NAME));
c.moveToNext();
}
c.close();
return name;
}

これは、データベースに接続するための私のアクティビティのコードです。

Database getdata = new Database(this);
getdata.open();
String data = getdata.getName();
getdata.close();
4

3 に答える 3

2

cursor.moveToFirst()以下のメソッド例を使用してください

if (cursor.moveToFirst()) {
             do {
                 list.add(cursor.getString(0));
                 list.add(cursor.getString(1));
                 list.add(cursor.getString(2));
                 list.add(cursor.getString(3));
                 list.add(cursor.getString(4));
                 list.add(cursor.getString(5));
                 list.add(cursor.getString(6));
               } while (cursor.moveToNext());
          }
于 2012-08-14T11:10:35.383 に答える
1

コードを更新してください...

public String[] getName() {
    String[] columns = new String[]{ KEY_ROWID, KEY_NAME };
    int i=0;
    Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null);
    c.moveToFirst();
    String[] names = new String[c.getCount()];
    while(!c.isAfterLast()) {
        String name = c.getString(c.getColumnIndex(KEY_NAME));
        names[i]=name;
        c.moveToNext();
        i++;
    }
    c.close();
    return names;
}

Database getdata = new Database(this);
getdata.open();
String[] data = getdata.getName();
getdata.close();
于 2012-08-14T11:25:02.180 に答える
1

参照してください、私が言ったように、コードを見ずに私は無力です..そしてあなたのコードを見た後..

Stringその関数からシングルをgetName()返す代わりに、を返しString[]ます。

注:これは疑似コードのみです。実際は異なる場合があります。

public String[] getName() {

        int i=0;
        String[] columns = new String[]{ KEY_ROWID, KEY_NAME };
        Cursor c = db.query(NAME_TABLE, columns, null, null, null, null, null);
        String name[] = new String[c.getCount()];
        c.moveToFirst();
          while(!c.isAfterLast()) {
               name[i] = c.getString(c.getColumnIndex(KEY_NAME));
               c.moveToNext();
               i++;
          }
        c.close();
        return name;
}

そしてこれは、

Database getdata = new Database(this);
getdata.open();
String data[] = getdata.getName();
getdata.close();
于 2012-08-14T11:25:36.757 に答える