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

问题的发生

昨天我帮我同学做了一个前端加后端的项目,使用的是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";

猜你喜欢

转载自blog.csdn.net/qq_40036754/article/details/84065106