在SQLite中显示具有给定id(SELECT WHERE语句)的行不适用于Android Studio

时间:2018-06-05 21:35:34

标签: java android sqlite cursor

我的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)

上收到此错误

enter image description here


我想只打印第一行,其id与函数参数中的id匹配...但我得到这个错误,如何解决它以及我做错了什么?

1 个答案:

答案 0 :(得分:0)

来自docs

  

getString(int columnIndex)   以String形式返回所请求列的值。

     

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

     

参数

     

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

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

return cursor.getString(1);

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

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

return cursor.getString(0);