Java SQLite删除查询不工作

Java SQLite删除查询不工作,java,android,sqlite,Java,Android,Sqlite,我有一个简单的删除查询,根据创建的日期删除记录 int result = db.delete(TableName,"CreatedDate=?",new String[] { "STRFTIME('%d-%m-%Y', DATETIME('now'))" }); 上述查询不起作用 但是当我用这种格式写的时候 DELETE FROM TableName WHERE CreatedDate =STRFTIME('%d-%m-%Y',DATE('Now')) 现在它开始工作了 我不明白为什么一个在

我有一个简单的删除查询,根据创建的日期删除记录

int result = db.delete(TableName,"CreatedDate=?",new String[] { "STRFTIME('%d-%m-%Y', DATETIME('now'))" });
上述查询不起作用

但是当我用这种格式写的时候

DELETE FROM TableName WHERE CreatedDate =STRFTIME('%d-%m-%Y',DATE('Now'))
现在它开始工作了

我不明白为什么一个在工作,另一个不在工作。我错过了什么

我的另一个问题是在幕后,这行代码生成了什么查询

db.delete(TableName,"CreatedDate=?",new String[] { "STRFTIME('%d-%m-%Y', DATETIME('now'))" });
请开导我


谢谢

您可以使用
绑定文本。例如,在SQL中用
“单引号”
编写的字符串文本。不能将
用于绑定表达式,如
STRFTIME(“%d-%m-%Y”,DATE('Now'))

本质上,当您尝试绑定表达式,但它被绑定为字符串文字时,查询将变为

DELETE FROM TableName WHERE CreatedDate ='STRFTIME(''%d-%m-%Y'',DATE(''Now''))'

第一个查询查找CreatedDate字面上是字符串的表。“STRFTIME(“%d-%m-%Y”,DATETIME('now')”)”-它不计算函数。(事实上,这就是参数化查询的全部要点)