问题描述:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and password = ?' at line 1
在访问Mysql数据库的时候,出现了这种错误,问题代码如下:
connection = this.getConnection(true);
String sql = " select id, username, password, name, account_type, account_status from account where username = ? and password = ?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,username);
preparedStatement.setString(2,DigestUtils.md5Hex(password));
//获取结果
resultSet = preparedStatement.executeQuery(sql);
执行结果:
问题1:检查sql 语句,看看是否语句有问题,最好的方法就是直接复制到命令行去检测,看看能否执行成功,常见问题是符号写成中文的,其次就是语句中的属性名称和自己数据库所建立的表的名称不同,所以需要仔细检查。
问题2:在上面代码中,有两行代码的功能相同,如下:
1.
preparedStatement = connection.prepareStatement(sql);
2.
resultSet = preparedStatement.executeQuery(sql);
问题在于在第二个代码的方法中,应该调用的是无参方法(如下)。所以将2代码换位3代码之后,问题就得到了解决。
3.
resultSet = preparedStatement.executeQuery();
修改解决问题之后:
以上这些都是笔者自己在做项目时候所遇到的问题,分享给大家希望对大家有所帮助,大家一起加油冲鸭!!!