今天在使用java连接mysql时一直报异常,使用的mysql版本是8.0.18,连接驱动版本是5.0.8,在另一个项目中使用相同版本的mysql数据库和数据库连接驱动,可以成功,就只有这个项目老是出现字符集错误.求大神解围.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import cn.edu.ayit.dao.UserDao;
import cn.edu.ayit.pojo.User;
public class UserDaoImpl implements UserDao {
@Override
public User checkUserLoginDao(String uname, String pwd) {
//创建jdbc对象
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
//声明返回变量
User u = null;
try {
//获取连接
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee?useUnicode=true&characterEncoding=UTF-8", "root", "root");
//创建sql语句
String sql = "select * from t_userinfo where uname=? and pwd=?";
//创建sql命令对象
ps = conn.prepareStatement(sql);
//给占位符赋值
ps.setString(1, uname);
ps.setString(2, pwd);
//执行sql
rs = ps.executeQuery();
//遍历结果
while(rs.next()){
u = new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
u.setAge(rs.getInt("age"));
u.setSex(rs.getString("sex"));
u.setBirth(rs.getString("birth"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
//释放资源
if(null != rs){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(null != ps){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(null != conn){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//返回结果
return u;
}
}
感觉是mysql安装指定字符集有问题。
没有呀,以前的项目连接都是正常
– 。淑女范erり 4年前characterEncoding=utf8
,改成这个utf8试试。另外为什么不用配套的驱动版本呢,@。淑女范erり: 试过了,还是不行,配套的驱动同样也试过了,还是报错
– 大漠穷游 4年前