gpt4 book ai didi

java - SQLite 撇号导致强制关闭 - .replace ("' ", "' '") 无法解决问题

转载 作者:行者123 更新时间:2023-12-01 22:33:07 26 4
gpt4 key购买 nike

我有一个正在尝试运行的 SQLite 查询,但由于标题字符串中的撇号,它被强制关闭。我尝试使用 title.replace("'", "''")title.replace("'", "\\") 解决此问题以及 title.replaceAll("'", "\");然而,由于撇号,它仍然强制关闭 - 当我调试时 - 撇号仍然存在于标题中 - 谁能指出我在这里可能做错了什么?

源代码 fragment :

  String title = info.get(MeetingInfo.MEETING_TITLE);

String selectionClause = Events.DTSTART + " = '" + startTime + "' AND "
+ Events.DTEND + " = '" + endTime + "' AND "
+ Events.TITLE + " = '" + title.replace("'", "\\") + "'";

最佳答案

您应该使用参数化命令:

Cursor res = 
db.rawQuery("SELECT * FROM Events WHERE DTSTART = ? AND DTEND = ? AND TITLE = ?;",
new String[]{ startTime, endTime, title });

这有助于避免 SQL injections并使您不必以正确的方式格式化参数。也就是说,您不必像 SQLite 期望的那样格式化日期,您不必关心撇号,您不必关心文化特定的数字格式等,当然,它更容易编写、阅读和维护。

关于java - SQLite 撇号导致强制关闭 - .replace ("' ", "' '") 无法解决问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com