com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; che

问题描述:

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();

修改解决问题之后:

以上这些都是笔者自己在做项目时候所遇到的问题,分享给大家希望对大家有所帮助,大家一起加油冲鸭!!!

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值