Java简单操作mysql数据库代码存档+处理中文乱码问题

首先用的Maven框架,引包:

        
            mysql
            mysql-connector-java
            5.1.17
            jar
            compile
        

        存档对mysql的基本读写操作

        try {
            Connection conn = null;
            String sql;
            String url = "jdbc:mysql://10.10.10.18:3306/jacob?"
                    + "user=jacob_ro&password=mypassword&useUnicode=true&characterEncoding=gbk";
            try {
                Class.forName("com.mysql.jdbc.Driver");
                conn = DriverManager.getConnection(url);
                Statement stmt = conn.createStatement();
                //读数据举例
                sql = "select name from me_media";
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    String name = new String(rs.getString(1).getBytes("gbk"));
                    System.out.println(name);
                }
                //写数据举例
                sql = "insert into me_media(name,id) value('每日新闻',123)";
                stmt.execute(sql);
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                conn.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

由于线上线下的编码问题,对于中文字符可能会出现乱码的情况,比如都成了???样子,我的解决方法是尝试不同的编码来读取数据库的数据,同时在取数据出来的时候也要重新编码一下。比如我现在的代码处理mysql的中文,首先链接数据库的时候选择gbk,将数据拿到后getBytes("gbk")后再变回String,在这里变回String的时候回默认转为Java程序跑的时候的编码。



你可能感兴趣的:(Java简单操作mysql数据库代码存档+处理中文乱码问题)