web-dev-qa-db-ja.com

SQLiteカーソルから列値を取得する方法は?

私はカーソルから列値を取得しようとしています、この列はクエリ内の計算によって実行時に生成され、この列のnull値を取得しています、SQLiteテーブルに存在する他のすべての列の値を取得できます。

SQLiteエディターで同じクエリを実行すると、結果セットに生成された列の値も表示されます。

カーソルから取得するときにこれがヌル値を与えるのはなぜですか?

18

非常にシンプルで、次のいずれかの方法で取得できます

String id = cursor.getString( cursor.getColumnIndex("id") ); // id is column name in db

または

String id = cursor.getString( cursor.getColumnIndex(0)); // id is first column in db
57
Lucifer

カーソルの列名は大文字と小文字が区別されます。dbまたは列のエイリアス名で指定された大文字と小文字を一致させてください

3
Rafael Nobre
  1. 選択クエリの列インデックスがわからない場合は、これに従ってください、

    テーブルのすべてのフィールドに定数を定義して、スペルを確認する必要のないフィールド名を簡単に取得できるようにします

    「DBConstant.Java」という名前のDatabase Costantクラスを作成し、テーブルフィールドを定義します

    public static final String ID = "id";

    次に、カーソルから値を取得し、

    cursor.getString(cursor.getColumnIndex(DBConstant.ID));

    cursor.getColumnIndex(フィールド名); select文cursor.getString(column index)のフィールド列インデックスを返します。その列にある値を返します

  2. 選択クエリで列インデックスがわかっている場合、

    cursor.getString(0);

2
Krunal Shah

文字列値を取得したい場合

String id = cursor.getString( cursor.getColumnIndex("name") ); // id is column name in db
or

String id = cursor.getString( cursor.getColumnIndex(0)); 

整数値を取得する場合

String id = cursor.getInt( cursor.getColumnIndex("id") ); // id is column name in db
or

String id = cursor.getInt( cursor.getColumnIndex(0)); 
0

Android Studio 3.4.1(私はKotlinを使用していますが、ここでは違いはありません)で、非常に奇妙な動作を発見しました。

例えば:

Cursor c = db.rawQuery("Select IDH, ID, NOME, CONTEUDO from CalcHome 
           Inner Join Calcs using(id)", null)

列名は、Selectのフィールド名の大文字小文字に関係なく、厳密な方法で登録されました。配列コンポーネントc.columnNames[0]IdhではなくIDHです

そう

int a = c.getInt(c.getColumnIndex("IDH")) // gives a runtime error.

だが

int a = c.getInt(c.getColumnIndex("Idh")) // works!
0
Paulo Buchsbaum