一尘不染

Java的PreparedStatement中的%符号

sql

PreparedStatement ps = con.createStatement("select * from table1 where last_name like ?");
ps.setString(1, "'%"+lastName+"'");

这项工作与…相同吗?

Statement s = con.createStatement("select * from table1 where last_name like %"+ lastName);

还是PreparedStatement去除了%符号?


阅读 161

收藏
2021-05-16

共1个答案

一尘不染

%是通配符(至少在Oracle中是这样),因此从理论上讲,两者都应相同(假设您添加了丢失的单引号)

但是,第一种方法被认为是更好的做法,因为它可以使数据库优化程序不重新分析该语句。第一个还应保护您免受SQL注入,而第二个则不能。

2021-05-16