java中jdbc链接mysql步骤代码

前提要先导入mysql-connector-java的jar包。

package com.kyproductday;


import java.sql.*;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Date;

public class mysqlConnectionDemo {
    public static String className = "com.mysql.jdbc.Driver";
    public static String url = "jdbc:mysql://localhost:3306/kymom?useUnicode=true&characterEncoding=UTF-8";
    public static String username = "root";
    public static String password = "root";


    public static void main(String[] args) {
        Connection conn = null;
        Map<String,String> map = new HashMap<>();
        try {
            //1、加载驱动程序
            Class.forName(className);
            //2、获取数据库连接对象
            conn = DriverManager.getConnection(url,username,password);
            //3、获取sql语句执行对象
            Statement st = conn.createStatement() ;
            //4、执行sql语句
            String sql = "select workid,persons,time,act,workstart,workend,eat,stoplen from ky_productday where linetype='zp'and tdate >'2021-01-20 00:00:00' and tdate < '2021-02-02 00:00:00'";
            ResultSet rs = st.executeQuery(sql) ;
            //5、遍历处理结果集
            while(rs.next()){
                String workid = rs.getString(1);//此方法高效,数字为select从左到右,还可以采用rs.getString("workid")
                double persons = Double.valueOf(rs.getString(2));
                double time = Double.valueOf(rs.getString(3));
                double act = Double.valueOf(rs.getString(4));
                String workstart = rs.getString(5);
                String workend = rs.getString(6);
                int use = rs.getInt(7) + rs.getInt(8);
                SimpleDateFormat df =new SimpleDateFormat("yy-MM-dd hh:mm:ss");
                long start = df.parse(workstart).getTime();
                long end = df.parse(workend).getTime();
                double investTime = ((end-start) - use*60*1000)*persons;
                NumberFormat nf = NumberFormat.getPercentInstance();
                nf.setMaximumFractionDigits(2);
                String ratio = nf.format(act*time*1000/investTime);
                map.put(workid,ratio);
            }
            for(Map.Entry<String, String> vo : map.entrySet()){
                vo.getKey();
                vo.getValue();
                System.out.println(vo.getKey()+" "+vo.getValue());
                String sql2 = "update ky_productday set ratio = '"+ vo.getValue()+"' where workid = '"+vo.getKey()+"'";
                st.executeUpdate(sql2);
            }
            if(rs !=null){   // 6、关闭结果集
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if(st !=null){   // 7、关闭声明
                try {
                    st.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn !=null){  // 8、关闭连接对象
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/publicman_/article/details/114020869