前提要先导入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();
}
}
}