如何从sqlite游标中获取列值?

时间:2012-02-23 11:21:45

标签: android sqlite cursor

我试图从游标中获取列值,此列是在运行时通过查询内部的计算生成的,我得到此列的空值,我能够获得存在的所有其他列的值在SQLite表中。

我在SQLite编辑器上执行相同的查询,它还显示结果集中生成的列的值。

为什么当我从游标中检索它时,它会给出null值?

5 个答案:

答案 0 :(得分:57)

非常简单你可以通过以下任何一种方式获得它

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

答案 1 :(得分:3)

游标列名称区分大小写,请确保您匹配db或列别名中指定的大小写

答案 2 :(得分:2)

  1. 如果您不知道选择查询中的列索引,请按照此处

    进行操作

    为表的所有字段定义常量,以便很容易获得字段 你不需要验证其咒语的名称

    创建名为" DBConstant.java"的数据库Costant类。并定义 表格字段

      

    public static final String ID =" id&#34 ;;

    然后从游标中获取值

      

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

    cursor.getColumnIndex(字段名称);它在select语句中返回字段列索引 cursor.getString(列索引)。它返回该列上的值

  2. 如果您在选择查询中知道列索引,

      

    cursor.getString(0);

答案 3 :(得分:0)

如果要获取字符串值

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

答案 4 :(得分: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!