首页 > 解决方案 > 在 SQLite 中显示具有给定 id 的行(SELECT WHERE 语句)不起作用 Android Studio

问题描述

我的SqliteOpenHelper课堂上有这个方法:

public String getTablica(int id,Context context)
{
    SQLiteDatabase db=this.getWritableDatabase();

    String query="SELECT "+COL2+" FROM "+TABLE_NAME+" WHERE "+COL1+"="+id;

    Cursor cursor=db.rawQuery(query,null);

   try {
       cursor.moveToFirst();

       return cursor.getString(1);
   }
   catch(Exception ex)
   {
       Toast.makeText(context,ex.getMessage(),Toast.LENGTH_LONG).show();
       return "";
   }
}


我在 cursor.getString(1) 行上收到此错误

在此处输入图像描述


我只想打印具有与函数参数中的 id 匹配的 id 的第一行...但是我收到此错误,如何解决它以及我做错了什么?

标签: javaandroidsqlitecursor

解决方案


来自文档

getString (int columnIndex) 将请求列的值作为字符串返回。

当列值为 null 或列类型不是字符串类型时,结果以及此方法是否引发异常是实现定义的。

参数

columnIndex int:目标列的从零开始的索引。

因此方法getString()参数索引从 0 开始。您正在请求索引为 1 的参数,即第二列。

return cursor.getString(1);

由于您在 SELECT 语句中只请求一列,并且您正试图获取第二列,因此存在异常,这就是它失败的原因。

要修复它,请将此行更改为上一行:

return cursor.getString(0);

推荐阅读