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去除了%符号?
%是通配符(至少在Oracle中是这样),因此从理论上讲,两者都应相同(假设您添加了丢失的单引号)
但是,第一种方法被认为是更好的做法,因为它可以使数据库优化程序不重新分析该语句。第一个还应保护您免受SQL注入,而第二个则不能。