如何在Android SQLite中的where子句中包含参数?

时间:2012-01-31 05:03:32

标签: java android sqlite

我有一个表T1,它有一个代表julianday的浮点列。现在我要删除julianday比n日更早的条目。我试过了:

db.delete(T1, COL_JULIANDAY + " <= julianday('now', '- ? days')",
  new String[] { Integer.toString(days) });

但我从Android收到错误:

 android.database.sqlite.SQLiteException: bind or column index out of range

我认为这是因为&#39;?&#39; mark在我的where-clause中引用。

3 个答案:

答案 0 :(得分:1)

我建议尝试在where子句中使用连接运算符,而不是使用原始SQL。

db.delete(T1, COL_JULIANDAY + " <= julianday('now', '- ' || ? || ' days')",
    new String[] { Integer.toString(days) });

答案 1 :(得分:0)

我还没有检查过,但我认为这应该是,

db.delete(T1, COL_JULIANDAY + " <= julianday(?)", new String[] 
                                                    { Integer.toString(days) });

如果您愿意,可以使用db.execSQL(statement);

的sql查询
db.execSQL("delete from "+T1+" where COL_JULIANDAY <= julianday('"+days+"')");

答案 2 :(得分:0)

julianday('now', '- ? days')

应与

相同
julianday('now') - ?