从数据库中的列获取值

时间:2013-09-12 23:07:03

标签: android mysql sqlite cursor android-cursor

我从数据库中的“threadid”列获取值。问题是它从前一个记录/行获取值。当我试图获得第一条记录时,我的应用程序崩溃了,如何解决这个问题并解决了这个问题?

long id;
long threadid = datasource.getthreadid(id);
Toast.makeText(getActivity(), String.valueOf(threadid), Toast.LENGTH_SHORT).show();

public long getthreadid(long id)
  {

      String ide=String.valueOf(id);
      String queryz = "SELECT " + MySQLiteHelper.COLUMN_THREADID 
                + " FROM " + MySQLiteHelper.TABLE_NAME 
                + " WHERE " + MySQLiteHelper.COLUMN_ID + "=" + ide;
      Cursor cursor = database.rawQuery(queryz, null);
      cursor.moveToFirst();
     // cursor.moveToPosition(Integer.parseInt(String.valueOf(id)));
     long threadid= cursor.getLong(cursor.getColumnIndex("threadid"));

      cursor.close();
    return threadid;

  }

2 个答案:

答案 0 :(得分:0)

如果你只想要一排。那么做这样的事情可能会有用。

long threadid;

if (cursor.moveToFirst())
{
    threadid = cursor.getLong(cursor.getColumnIndex("threadid"));
}
else
{
    // ah oh, we do not have this id!
    // do something here if you need to
}

另外,如果您打算使用字符串,我建议您绑定参数。我知道你事先有很长时间,但对于弦乐你可以做到这一点。

  String queryz = "SELECT " + MySQLiteHelper.COLUMN_THREADID 
            + " FROM " + MySQLiteHelper.TABLE_NAME 
            + " WHERE " + MySQLiteHelper.COLUMN_ID + " = ?";
  Cursor cursor = database.rawQuery(queryz, new String[]{ide});

答案 1 :(得分:0)

要获取所有记录,首先需要移动到第一个记录,然后迭代完成其余记录。

if (cursor.moveToFirst()) {
    do {
        // get row values
    } while (cursor.moveToNext());
}

cursor.close();