2012-04-06 65 views
0

你好,我是新的android和我真的需要幫助的東西。我在我的sqlitehelper類中有一個預填充數據庫,我需要一個查詢請求返回一個String []表。 例如,我的數據庫有3列id,name,tel我的查詢將基於id,所以遊標將得到{1 mary 2134}我希望將它轉換爲一個字符串[1 mary 2134]。不知道它是否有幫助,但是我的所有請求都會返回一行,導致查詢的主鍵基於此。
我的代碼是類似的東西:SQL查詢轉換爲數組Android

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的,如:

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 

所以我的問題是如何轉換單行返回查詢to a String []

回答

0

您似乎對光標是什麼感到困惑。

遊標指向結果響應中的一行。所以,如果你的表是這樣的:

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

光標只能在一個時間點,以這些行之一,直到調用cursor.movetoNext()。在單行結果中,您的光標顯然不會使用該方法。

當然,如果你想有一個單行,而不是一個表像你的變量命名爲:

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)); 
+0

哇這是快速的...謝謝那正是我想要的,我只是把它放在for循環,它工作正常 – 2012-04-06 22:38:00

0

在您使用遊標之前,您必須先致電cursor.moveToFirst()。在你的while循環之前調用它。