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

Posted

技术标签:

【中文标题】如何从 sqlite 游标中获取列值?【英文标题】:How to get column value from sqlite cursor? 【发布时间】:2012-03-13 19:10:12 【问题描述】:

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

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

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

【问题讨论】:

请提供您用于查询和检索列值的代码。 @Chandrapal Yadav:你确定吗,当你发起查询时,你包括那个列?千万不要错过! 试试看这个链接..使用查询方法..***.com/questions/10600670/… 【参考方案1】:

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

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

【讨论】:

本例中的光标是什么? 第二个例子应该是String id = cursor.getString(0);【参考方案2】:

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

【讨论】:

【参考方案3】:

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

    为表的所有字段定义常量,以便轻松获取字段 名字你不需要验证它的拼写

    创建名为“DBConstant.java”的数据库成本类并定义 表格字段

    public static final String ID = "id";

    然后从光标中获取值,

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

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

    如果您知道选择查询中的列索引,

    cursor.getString(0);

【讨论】:

【参考方案4】:

如果要获取字符串值

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

【讨论】:

【参考方案5】:

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!

【讨论】:

以上是关于如何从 sqlite 游标中获取列值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Recycler View 的长按位置获取 SQLite 列值?

pandas取列值转化为列表

PL/SQL:如何根据列值插入

如何从表1中检索列数据并使用SQLite数据库将该列值插入到Android Studio的表2中?

如何从 Sharepoint 2010 用户组中获取自定义列值

如何捕获更新列值并使用它?