如何为此查询编写准备好的语句?
How to write prepared statements for this query?
您好,我已经为我的应用程序及其工作编写了一个连接查询。我的下一个要求是将该查询转换为我卡住的准备好的语句。
"SELECT * FROM " + TableA.TABLE + " as d LEFT JOIN " + TableB.TABLE + " as c ON d."+ TableA.DAMAGECODE + "=c." + TableB.DAMAGECODE + " AND d."
+ TableA.INDEX + "=c." + TableB.DAMAGECODEINDEX + " AND d."
+ TableA.OBJECTTYPE + "=c." + TableB.OBJECTCLASS + " WHERE d."+ TableA.LEAF + " = '1' AND d." + TableA.OBJECTTYPE + " = ? AND " + "(d."+ TableA.DAMAGECODE + " LIKE ? OR d." + TableA.DAMAGETEXT + " LIKE ?) AND c." + TableB.CONSTRUCTIONSERIES + " = ? ORDER BY " + TableA.DAMAGETEXT;
cursor = db.rawQuery(sql,new String[]{String.valueOf(objectClass),"'%" + query + "%'","'%" + query + "%'",constructionSeries});
当我 运行 原始查询时,我得到了结果,但是当 运行 上述准备好的语句时,我得到的游标计数始终为零
当您传递 String
参数时,您不需要自己添加 '
,PreparedStatement
会自行管理这些参数。
"'%" + query + "%'"
目前你的情况像
where columnA = "'%somethingToFind%'"
因此,除非您在 columnA
中有一个值,例如 'somethingToFindInColumnA'
(请注意 String
开头和结尾的引号)。你永远不会得到结果。
删除那些得到类似的东西:
"%" + query + "%"
完整答案:
db.rawQuery(sql,new String[]{String.valueOf(objectClass),"'%" + query + "%'","'%" + query + "%'",constructionSeries});
变成:
db.rawQuery(sql,new String[]{String.valueOf(objectClass),"%" + query + "%","%" + query + "%",constructionSeries});
您好,我已经为我的应用程序及其工作编写了一个连接查询。我的下一个要求是将该查询转换为我卡住的准备好的语句。
"SELECT * FROM " + TableA.TABLE + " as d LEFT JOIN " + TableB.TABLE + " as c ON d."+ TableA.DAMAGECODE + "=c." + TableB.DAMAGECODE + " AND d."
+ TableA.INDEX + "=c." + TableB.DAMAGECODEINDEX + " AND d."
+ TableA.OBJECTTYPE + "=c." + TableB.OBJECTCLASS + " WHERE d."+ TableA.LEAF + " = '1' AND d." + TableA.OBJECTTYPE + " = ? AND " + "(d."+ TableA.DAMAGECODE + " LIKE ? OR d." + TableA.DAMAGETEXT + " LIKE ?) AND c." + TableB.CONSTRUCTIONSERIES + " = ? ORDER BY " + TableA.DAMAGETEXT;
cursor = db.rawQuery(sql,new String[]{String.valueOf(objectClass),"'%" + query + "%'","'%" + query + "%'",constructionSeries});
当我 运行 原始查询时,我得到了结果,但是当 运行 上述准备好的语句时,我得到的游标计数始终为零
当您传递 String
参数时,您不需要自己添加 '
,PreparedStatement
会自行管理这些参数。
"'%" + query + "%'"
目前你的情况像
where columnA = "'%somethingToFind%'"
因此,除非您在 columnA
中有一个值,例如 'somethingToFindInColumnA'
(请注意 String
开头和结尾的引号)。你永远不会得到结果。
删除那些得到类似的东西:
"%" + query + "%"
完整答案:
db.rawQuery(sql,new String[]{String.valueOf(objectClass),"'%" + query + "%'","'%" + query + "%'",constructionSeries});
变成:
db.rawQuery(sql,new String[]{String.valueOf(objectClass),"%" + query + "%","%" + query + "%",constructionSeries});