gpt4 book ai didi

查询字符串中的 Java SQL 引号

转载 作者:行者123 更新时间:2023-12-01 08:15:35 26 4
gpt4 key购买 nike

我有以下代码来执行 SQL 查询:

query = String.format("select * from users where user_name = '%s';", results.getString(1));
results2 = mStmt.executeQuery(query);

数据集中的一个 user_name 的值为“O'brien”。由于“O'brien”中的单括号,这破坏了我的查询。查询将变为:

select * from users where user_name = 'O'brien'

克服这个问题而不修改数据的策略是什么?

编辑:准备好的语句确实解决了单引号问题,但这只是问题的一部分。我拥有的字符串值之一包含单词“UNDER”。这是一个 SQL 关键字。例如,我有一个名为 insertAll 的准备语句,其查询为:

insert into names (id, val1, val2, val3, val4, tTime, val5) values (?, ?, ?, ?, ?, ?, ?)

感谢您的帮助!

最佳答案

使用prepareStatement设置参数。您的代码是书中的 SQL 注入(inject)可利用代码。 http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

关于查询字符串中的 Java SQL 引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638859/

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