在开发的过程中遇到了一个小坑,特此记录。在根据用户名查询客户的时候,比如zhangsan和ZHANGSAN同时查出来,
原来是Java区分大小写和mysql不区分大小写造成的。
不要轻易修改数据库。
解决步骤:
1. 在插入用户名的时候直接全部插入为小写,不管用户输入的是大写还是小写,直接转化为小写(当时的开发规定),
//toLowerCase()方法将String转换为小写
String loginName=userBean.getLoginName().toLowerCase();
2.如果2个用户名一样的话,可以字母加数字的方法解决,zhangsan1和zhangsan.插入的时候进行判断。
解决办法:(咨询大牛,实测得到的结论)
1.在查询的时候解决(binary)
select * from user where binary loginname="zhangsan"
select * from user where binary loginname="ZHANGSAN"
2 .在建表的时候解决(binary)
CREATE TABLE ceshi
(
id
int(2) NOT NULL,
name
varchar(4) binary NOT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;