2010-12-29 5 views
27

私が使用しているSQLiteデータベーステーブルは、必要なときにいつでもカラムを追加します。私は、データベースを更新し、ハードコードされた値を更新することを忘れて、列をハードコードしたくありません。どのようにしてテーブルの列の名前をすべて返すことができますか? (可能であればString[]AndroidでSQLiteテーブルのすべてのカラムを返します

答えて

43

ベストあなたはSQLiteDatabaseインスタンスと使用クエリーメソッドを使用している場合

SQLiteDatabase mDataBase; 
(some code here...) 
mDataBase = getReadableDatabase(); 
Cursor dbCursor = mDataBase.query(TABLE_NAME, null, null, null, null, null, null); 
String[] columnNames = dbCursor.getColumnNames(); 

columnNamesは、クエリメソッドがヌルを受け入れることを列パラメータの入力として注意することがまた面白いです、列名

+1

と特定の列から値を取得する方法を教えてください? – Apurva

+0

カーソルdbCursor = mDataBase.query(TABLE_NAME、新しい文字列[] {YOUR_COLUMN_NAME_1、YOUR_COLUMN_NAME_2、....}、null、null、null、null、null); –

+0

getReadableDatabaseとは何ですか? –

6

列名の一覧は必要ありません。

選択する列のカンマ区切りリストを作成できるように、列名のリストが必要なようです。このような場合は、あなたは通常、あなたの代わりにアスタリスクを使用することができ、あなたのSELECTクエリで列名のリストを配置する場所:

SELECT t.* FROM table AS t ... 

SELECT * FROM table WHERE ... 

またはテーブルがエイリアスが使用されている場合

アスタリスクは「すべての列」を意味します。

EDIT:あなたがいずれかの文字列の返された配列を変更してはなりません

Cursor c = db.rawQuery("SELECT * FROM table WHERE 0", null); 
try { 
    String[] columnNames = c.columnNames(); 
} finally { 
    c.close(); 
} 

注:あなたは本当に、あなたは、次のコードを使用することができ、テーブルの列名のリストが必要な場合方法:https://code.google.com/p/android/issues/detail?id=3731

+0

なぜ「WHERE 0」が使用されていますか?私たちはなしでできませんか? :O –

4

を持つ必要があります。 nullを入力すると、すべての列が返されます。

db.query("Table_name",null,COLUMN_ID + "=" + id,null,null,null,null); 

指定されたIDを持つ行のすべての列を返します。

ここでメソッド定義を確認できます。

+0

'if(columns!= null && columns.length!= 0){ appendColumns(query、columns); } else { query.append( "*"); } ' – Renatinn

関連する問題