SQLite数据库查询功能没有替换?选择args

时间:2015-10-28 09:15:55

标签: android sqlite sqliteopenhelper

我的数据库类中有一个get函数,用于从DB获取特定行。

 public Line getLine(String date){
    SQLiteDatabase sql = db.getWritableDatabase();
    Cursor cursor;
    Line line = new Line();
    try{
        cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
        line = new Line(cursor.getInt(0),cursor.getString(1),cursor.getString(2),cursor.getString(3).equals("YES"));
    }
    catch (Exception e){
        e.getCause();
    }
    finally {
        if (sql.isOpen())
            sql.close();
    }
    return line;
}`

然而,当我运行它时,光标没有得到正确的查询,当它的重新打印它看起来像这样:

  

SQLiteQuery:SELECT * FROM a28a9a2015 WHERE date_col =?

所以它保持了?并没有把日期字符串放在那里.. 我尝试过类似的东西 -

 cursor = sql.query(Db_name,null,DATE_COL+"="+date,null,null,null,null);

OR

 cursor = sql.query(Db_name,null,DATE_COL+"= '"+date+"',null,null,null,null);

同样的结果。

任何指针?

1 个答案:

答案 0 :(得分:2)

您需要将光标移动到第一个位置

cursor = sql.query(Db_name,null,DATE_COL+"=?",new String[] {date},null,null,null);
if (cursor.moveToFirst()) {
     // TODO
}

否则光标位于-1位置,无法获取任何数据。符号“?”正在将内部请求替换为sqlite,因此在游标中你会看到“?”。