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

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

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

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

【问题讨论】:

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

标签: android sqlite android-cursor


【解决方案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】:
    1. 如果您不知道选择查询中的列索引,请按照此操作,

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

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

      public static final String ID = "id";

      然后从光标中获取值,

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

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

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

      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!
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-14
          • 1970-01-01
          • 2011-09-15
          • 2021-09-24
          • 2012-05-02
          • 1970-01-01
          相关资源
          最近更新 更多