问题:预处理语句为:SELECT * FROM WHERE name=? 如果传送的参数为“admin” “ADmin” “ADMIN” “ADimn”等,结果处理后的语句为SELECT * FROM WHERE name=‘admin’ 解决办法:要查询的字段前加BINARY ,如: SELECT * FROM WHERE BINARY name=? 可能原因:调用mysql API将执行预处理语句,可是mysql对这种情况不区分大小写
简单点理解:prepareStatement会形成参数化的查询,例如:1select * from A where tablename.id = ?传入参数'1;select * from B'如果不经过prepareStatement,会形成下面语句:1select * from A where tablename.id = 1;select * from B这样等于两次执行,但如果经过预处理,会是这样:1select * from A where tablename.id = '1;sele
MySQL预处理技术:1.减轻服务器压力2.防止sql注入,把传递过去的危险字符也只当做参数处理3.将sql语句强制一分为二:第一部分为前面相同的命令和结构部分,第二部分为后面可变的数据部分基本使用 prepare sql_1 from "select * from mass_list"; execute sql_1; drop prepare sql_1; 传参: prepare sql_2 from "select * from mass_list where id=?&