首页 > 数据库 >通过JDBC操作数据库时出现中文乱码的问题,Navicat

通过JDBC操作数据库时出现中文乱码的问题,Navicat

时间:2022-12-30 18:00:11浏览次数:35  
标签:JDBC java preparedStatement Navicat 乱码 book sql Date new


问题的发生

昨天我帮我同学做了一个前端加后端的项目,使用的是mysql+jdbc+Servlet+jsp技术。
但是通过junit测试向数据库插入数据时,插入中文,在Navicat中是以问号显示的。
献上代码

@Test
public void test1() throws ParseException {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");


Book book = new Book(4,"冯凡利","hao",sdf.parse("2016-12-23"));
BookDao book1 = new BookDao();
try {
Integer integer = book1.addBook(book);
System.out.println(integer);
} catch (SQLException e) {
e.printStackTrace();
}
}

dao层数据库

public Integer addBook(Book book) throws SQLException {

int i = 0;
try {
connection = DB.getConnection();
String sql = "INSERT INTO book(b_name,b_type,b_time) VALUES(?,?,?)";
preparedStatement = (PreparedStatement) connection.prepareStatement(sql);

preparedStatement.setString(1,book.getB_name());
preparedStatement.setString(2,book.getB_type());
/* public void setDate(int parameterIndex, java.sql.Date x) */

/*
* 前边传过来的是java.util.Date
* 所以要
* java.util.Date 转 java.sql.Date
*
* */
java.util.Date b_time = book.getB_time();
java.sql.Date sqlDate=new java.sql.Date(b_time.getTime());

/*
* java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
* */

preparedStatement.setDate(3,sqlDate);
i = preparedStatement.executeUpdate();

} catch (SQLException e) {
e.printStackTrace();
}finally {
DB.closeTwo(connection,preparedStatement);
}
return i;

}

解决方法

在jdbc驱动时,在URL后面放上这段代码 ?characterEncoding=utf-8
代码献上

private final static String URL = "jdbc:mysql://ip地址:3306/数据库名?characterEncoding=utf-8";
private final static String USERNAME = "root";
private final static String PASSWORD = "123456";


标签:JDBC,java,preparedStatement,Navicat,乱码,book,sql,Date,new
From: https://blog.51cto.com/u_15926676/5981059

相关文章

  • nodejs express multer 中文名乱码【转】
    文件上传服务器端接收的文件列表中文件名不支持中文,都是乱码,查询发现nodejs对中文支持的不好。找了半天,发现这个解决方法确实有效!!!!!核心代码//解决中文名乱码的问题f......
  • dremio jdbc 客户端简单说明
    dremiojdbc客户端实际上包含了基本上两大类,一个是传统jdbc的,一个是基于apachearrowflightsqljdbc的当前主要说明传统jdbc客户端的,内部上dremio基于了calcite......
  • HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向
    ​​​​HttpServletResponse 和ServletResponse 都是接口具体的类型对象是由Servlet容器传递过来 ServletResponse对象的功能分为以下四种:       设置响应......
  • 麒麟系统Windows 终端拷贝到国产系统上文件内容乱码
    该问题主要是由于Windows上编辑的文档使用的字体在银河麒麟桌面操作系统上没有找到的原因,Windows上宋体、黑体、楷体、仿宋体、微软雅黑为Windows上独有字体,因字体涉及......
  • 本地navicat连接不上云服务器的mysql
    最终排查是云服务器安装了宝塔,宝塔对端口又设置了一层防火墙规则(3306没有对外开放)。排查问题指南:https://blog.csdn.net/qq_40936395/article/details/127744040......
  • 解决二进制文件下载乱码问题
    好久没写博客了,突然想记录点什么。前段时间遇到一个问题,记录一下,以后遇到可以找到解决方案。事情的原由是这样的,后端返回一个二进制的csv文件让前端进行下载,前端采用axio......
  • jdbc简单封装
    构成:1、资源文件db.properties,中存放了驱动类地址、数据库url、用户名、密码。2、jdbc工具类JdbcUtils.java。jdbc工具类中实现了:1、获取数据库连接。......
  • 【详细】MySQL数据库与JDBC编程
    内容较多,建议收藏后慢慢看!●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★●★MySQL数据库与JDBC编程 JDBC(JavaData......
  • 命令行乱码处理
    chcp 936936         中国-简体中文(GB2312)Windows下在JAVA程序强制要UTF-8下,反而在命令行powershell会出现乱码,因为powershell默认是GB2312,要使得不产生......
  • Navicat Premium 12 永久破解激活
    下载安装包和破解工具链接:https://pan.baidu.com/s/1OtiavR1QrX7vp_jge4snQA提取码:p8t2 下载好后首先安装NavicatPremium12,此工具安装比较简单,我就不一步一步来了,疯狂......