批量读取json文件获取某字段值插入mysql,使用jdbc

public static void insert(Connection conn,String na,String rgb,String slab,String shex) {
        try {
            String sql = "insert into tb_test(name,a,b,c,detail)" + "values ( '"+na+ "','" +a+"','" +b+"','" +c+"','" +null+"')";
            Statement stmt1 =conn.createStatement();    // 创建用于执行静态sql语句的Statement对象
            int count = stmt1.executeUpdate(sql);  // 执行插入操作的sql语句,并返回插入数据的个数
            conn.close();   //关闭数据库连接
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //数据库连接
    public static Connection getConnection(String user, String pass) {
        Connection conn = null;//声明连接对象
        String driver = "com.mysql.cj.jdbc.Driver";// 驱动程序类名
        String url = "jdbc:mysql://192.168.xxx.xxx:3306/tb_aaa?" // 数据库URL
                + "useUnicode=true&characterEncoding=UTF8";// 防止乱码
        try {
            Class.forName(driver);// 注册(加载)驱动程序
            conn = DriverManager.getConnection(url, user, pass);// 获取数据库连接
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
    //释放数据库连接
    public static void releaseConnection(Connection conn) {
        try {
            if (conn != null)
                conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    public static void main(String[] args) throws Exception {
            File file = new File("/Users/aa/Downloads/jsonFiles");    //给定一个目录
            File[] list = file.listFiles();      //获取目录下的所有文件

            for(int i=0; i<list.length; i++){
                if(list[i].isFile()){           //判断是否为文件
                    InputStreamReader isr = new InputStreamReader(new FileInputStream(list[i]),"UTF-8");//读取文件,同时指定编码
                    StringBuffer sb = new StringBuffer();
                    char[] ch = new char[128];  //一次读取128个字符
                    int len = 0;
                    while((len = isr.read(ch,0, ch.length)) != -1){
                        sb.append(ch, 0, len);
                    }
                    isr.close();

                    Object na = null;
                    Object lab_data_l = null;
                    Object lab_data_a = null;
                    Object lab_data_b = null;
                    try {
                        JSONObject obj = (JSONObject)JSON.parse(String.valueOf(sb));
                        if(obj.get("data") !=null){
                            JSONObject dataObj = (JSONObject)obj.get("data");
                            na = dataObj.get("name")==null ? "sname":dataObj.get("name");
                            lab_data_l = dataObj.get("lab_data_l")==null ? "sl":dataObj.get("lab_data_l");
                            lab_data_a = dataObj.get("lab_data_a")==null ? "sa":dataObj.get("lab_data_a");
                            lab_data_b = dataObj.get("lab_data_b")==null ? "sb":dataObj.get("lab_data_b");
                        }else {
                            System.out.println("插入失败=========> "+list[i].getName()+"=====> "+sb);
                            continue;
                        }
                    } catch (Exception e) {
                        System.out.println(e);
                    }

                    String slab =lab_data_l.toString()+","+lab_data_a.toString()+","+lab_data_b.toString();
                    int[] sRGB = RGBUtil.Lab2sRGB(Double.parseDouble(lab_data_l.toString()), Double.parseDouble(lab_data_a.toString()), Double.parseDouble(lab_data_b.toString()));
                    String shex = RGBUtil.rgb2Hex(sRGB[0], sRGB[1], sRGB[2]);
                   String rgb =sRGB[0]+","+sRGB[1]+","+sRGB[2];

                    Connection conn = getConnection("username", "password");    // 获取数据库连接
                    insert(conn,na.toString(),rgb,slab,shex);    //方法名调用数据库连接
                    releaseConnection(conn);// 释放数据库连接

                    System.out.println(sb);
                }
            }

        System.out.println("list.length"+list.length);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值