0

こんにちは、私はアンドロイドが初めてで、本当に何か助けが必要です。私は自分の sqlitehelper クラスに事前設定されたデータベースを持っており、クエリ要求が String[] テーブルを返す必要があります。例 私のデータベースは id、name、tel の 3 つの列を取得しました。クエリは id に基づいているため、カーソルは {1 mary 2134} になります。これを文字列に変換したい [1 mary 2134]。それが役立つかどうかはわかりませんが、すべてのリクエストで単一の行が返されるため、クエリが主キーベースになります。
私のコードは次のようなものです:

   public String[] getSingleRow(String id){
    String[] asColumnsToReturn = new String[] { COLUMN_ID,COLUMN_NAME, COLUMN_TELEPHONE}
    Cursor cursor = this.dbSqlite.query(TABLE_NAME, asColumnsToReturn, COLUMN_ID + "=" + id, null, null, null, null);


    //here is where i need help
    String table[]=new String[2];
    int i = 0;

                while (i < table.length) {
                table[i]  = cursor.getString(i);
                i++;
                cursor.moveToNext();
                }
                cursor.close();
return table;
  }

メインクラスで次のようにテキストビューを設定できるようにする必要があります。

TextView myTextView = (TextView)findViewById(R.id.textView1);
Table= SQLiteHelper.getSingleRow(id);
myTextView.setText(Table[0]); // "0"for id "1" for name and "2" for telephone 

だから私の質問は、返された単一行のクエリを String[] に変換する方法です

4

2 に答える 2

0

カーソルを使用する前に、cursor.moveToFirst()最初に呼び出す必要があります。while ループの前にこれを呼び出します。

于 2012-04-06T22:00:28.243 に答える
0

カーソルとは何かについて混乱しているようです。

カーソルは、結果応答の 1 つの行を指しています。したがって、テーブルが次のようになっている場合:

1 | Mary | 1234
2 | Alice | 134
3 | Bob | 123

カーソルは、cursor.movetoNext() を呼び出すまで、一度に 1 つの行のみを指すことができます。単一行の結果では、カーソルは明らかにそのメソッドを使用する必要はありません。

もちろん、変数の名前のような TABLE ではなく単一の ROW が必要な場合は、次のように指定します。

cursor.moveToFirst();
String row[] = new String[3]
row[0] = cursor.getString(0);
row[1] = cursor.getString(1);
row[2] = cursor.getString(2);
return row;

また、列にも定数を使用することをお勧めします。

//declared somewhere as public static final String KEY_NAME = "name";
cursor.getString(cursor.getColumnIndexByName(KEY_NAME));
于 2012-04-06T22:05:13.227 に答える