android studio - sqlite:使用游标获取随机行数据

时间:2016-09-12 09:21:48

标签: android android-studio android-sqlite

我创建了一个名为"TABLE1_NAME"的Sqlite表,它只包含一个名为car_name的列;

在我的getdata()函数中,我在db查询中使用"ORDER BY RANDOM() LIMIT 1"来获取具有随机位置的汽车名称,但是,结果始终存储为null。

请注意:字符串carname已被声明为全局变量。

这是我的代码:

public String getData()
{
    sqLiteDatabase=this.getReadableDatabase();
    Cursor cursor;
    cursor= sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE1_NAME+" ORDER BY RANDOM() LIMIT 1",null);

    if(cursor!=null && cursor.moveToFirst())
    {
        carName=cursor.getString(cursor.getColumnIndex("car_name"));
        cursor.close();
    }
    return carName; //carname=null --> null is being stored in carname
}

请指导我,我哪里出错了;感谢。

以下是我编辑的代码,在合并了您的所有建议后,结果仍为空:

 public String getData()
{
    String carName = null;
    sqLiteDatabase=this.getReadableDatabase();
    Cursor cursor;
    cursor= sqLiteDatabase.rawQuery("SELECT * FROM "+TABLE1_NAME+" ORDER BY RANDOM() LIMIT 1",null);

    if(cursor!=null && cursor.moveToFirst() && !cursor.isAfterLast())
    {
        carName=cursor.getString(cursor.getColumnIndexOrThrow("car_name"));
        cursor.close();
    }
    return carName;
}

这就是我首先将数据插入数据库的方式:

 public void insertCarData(String[] cars)
{
    sqLiteDatabase=this.getReadableDatabase();
    ContentValues cv = new ContentValues();

    for(int i=0;i<cars.length;i++)
    {
        cv.put(TABLE_CAR_NAME,cars[i]);
    }
    sqLiteDatabase.insert(TABLE1_NAME,null,cv);
    sqLiteDatabase.close();
}

问题可能出在这里。感谢。

0 个答案:

没有答案