zoukankan      html  css  js  c++  java
  • JDBC中的批量插入和乱码解决

    字符集-乱码问题

    用JDBC访问MySql数据库的时候,如果JDBC使用的字符集和MySql使用的字符集不一致,那么会导致乱码发生。解决办法当时是在使用JDBC的时候指定和数据库一样的字符集。我们可以在DB_URL字符串后加上”?characterEncoding=XXX”的方式指定JDBC使用的字符集。

    同时,我们需要知道MySql中使用的字符集,可以通过以下两个命令获取。

    1)      show variables like '%character%';获取数据库或者整个服务器使用的字符集。

    可以看到,上面截图显示笔者整个数据库服务器以及当前数据库使用的都是GBC编码。

    2)      show create table user; 获取user表使用的字符集

    上面截图显示当前user表使用的字符集也是gbk。其实,我们还可以对每一个列设置字符集。

    那么这几个级别的字符集,到底用的哪一个呢?其实他们是有优先级的:

    Column> Table> Database > Server

    批量插入问题

    有些时候我们需要向数据库中插入一大批数据,如果单纯的使用普通SQL语句一条一条向数据库插入呢效率会非常慢。这个时候我们就可以利用Statement的批量插入数据接口来实现功能。

    示例代码:

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.ArrayList;

    import java.util.List;

    class User

    {

         private String userid;

         private String name;

         private String password;

        

        

         public User(String userid, String name, String password)

         {

               this.setUserid(userid);

               this.setName(name);

               this.setPassword(password);

         }

        

         public String getUserid()

         {

               return userid;

         }

         public void setUserid(String userid)

         {

               this.userid = userid;

         }

         public String getName()

         {

               return name;

         }

         public void setName(String name)

         {

               this.name = name;

         }

         public String getPassword()

         {

               return password;

         }

         public void setPassword(String password)

         {

               this.password = password;

         }

    }

    public class Hello

    {

         static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";

         static String DB_URL = "jdbc:mysql://localhost:3306/mldn";

         static final String USERNAME = "root";

         static final String PASSWORD = "admin";

        

        public static void main(String a[]) 

        {

        Connection conn = null;

        Statement stmt = null;

        ResultSet rs = null;

        List<User> listUser = Hello.getUser();

       

        try

               {

               //加载驱动

                    Class.forName(JDBC_DRIVER);

                    //获取链接

                    DB_URL += "?characterEncoding=gbk";

                    conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

                    //执行SQL语句

                    stmt = conn.createStatement();

                    for(User item : listUser)

                    {

                         stmt.addBatch("INSERT INTO user(userid,name,password) VALUES('"+item.getUserid()+"','"+item.getName()+"','"+item.getPassword()+"');");

                    }

                    stmt.executeBatch();

                    stmt.clearBatch();

               }

        //异常处理

        catch (ClassNotFoundException e)

               {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

               } catch (SQLException e)

               {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

               }

        finally

        {

               //资源清理

                    try

                    {

                         conn.close();

                         stmt.close();

                         rs.close();

                    }

                    catch(Exception e)

                    {

                         //ignore exceptions when closing.

                    }

               }

       

       

       

        System.out.println("///Done~~");

        }

       

        public static List<User> getUser()

        {

        List<User> userList = new ArrayList<User>();

        userList.add(new User("cyx", "陈奕迅", "cyx999"));

        userList.add(new User("zjl", "ZHOU JIELUN", "zjl123"));

        userList.add(new User("cjk", "苍井空", "cjk520"));

        userList.add(new User("ly", "LIU YAN", "ly1988"));

       

        return userList;

        }

    }

  • 相关阅读:
    Android Studio 快捷键
    Mac 下面,添加android adb命令(一般环境变量的添加方法)
    快速掌握 Android Studio 中 Gradle 的使用方法
    JAVA 十六进制与字符串的转换
    总结自己的Git常用命令
    Android性能优化典范---转
    【.NET Core微服务实战-统一身份认证】开篇及目录索引
    调用API修改Ocelot的配置文件
    VUE组件汇总
    Vue + GraphQL初试
  • 原文地址:https://www.cnblogs.com/kuillldan/p/5864262.html
Copyright © 2011-2022 走看看