首页 新闻 搜索 专区 学院

使用java连接数据库时报字符集异常,在连接字符串中指定字符集还是报错

0
[待解决问题]

今天在使用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;
}
}

大漠穷游的主页 大漠穷游 | 菜鸟二级 | 园豆:206
提问于:2020-05-16 21:54

characterEncoding=utf8,改成这个utf8试试。另外为什么不用配套的驱动版本呢,

。淑女范erり 5个月前

@。淑女范erり: 试过了,还是不行,配套的驱动同样也试过了,还是报错

大漠穷游 5个月前
< >
分享
所有回答(1)
1

感觉是mysql安装指定字符集有问题。

yanweijie62 | 园豆:202 (菜鸟二级) | 2020-05-17 15:13

没有呀,以前的项目连接都是正常

支持(0) 反对(0) 大漠穷游 | 园豆:206 (菜鸟二级) | 2020-05-17 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册