package zwh.db2.six; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import javax.swing.JOptionPane; public class Tool { Statement stmt; Connection con; private ResultSet rs; private PreparedStatement pps; private static String driver = "COM.ibm.db2.jdbc.app.DB2Driver"; static{ try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); errorMessage(e.getMessage());//任务7.1 } } public Tool(){ String url = "jdbc:db2:sample"; try { con = DriverManager.getConnection(url,"db2admin","db2admin"); stmt = con.createStatement(); }catch(SQLException e){ e.printStackTrace(); errorMessage(e.getMessage());//任务7.2 } } public int update(String sql,Object[] param){//增删改,预处理 int count = 0; try { if(param==null){ stmt.executeUpdate(sql); }else{ pps = con.prepareStatement(sql); for(int i = 0;i<param.length;i++){ pps.setObject(i+1, param[i]); } count = pps.executeUpdate(); } } catch (SQLException e) { e.printStackTrace(); errorMessage(e.getMessage());//任务7.3 } return count; } public ArrayList<HashMap<String, Object>> query(String sql){//从数据库查询 try { rs = stmt.executeQuery(sql); ResultSetMetaData mt = rs.getMetaData();// 获取结果集结构对象,结果集里有字段,类型,长度 int count = mt.getColumnCount();//列数目 String[] columns = new String[count];// 根据列的数目创建数组 for(int i = 0;i<columns.length;i++){// 把字段名存入数组 columns[i] = mt.getColumnName(i+1); } //把结果集里的数据保存到链表 ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>(); while(rs.next()){ HashMap<String,Object> map = new HashMap<String,Object>(); for(int i = 0;i<columns.length;i++){ map.put(columns[i],rs.getString(columns[i])); } list.add(map); } rs.close(); return list; } catch (SQLException e) { e.printStackTrace(); errorMessage(e.getMessage());//任务7.4 } return null; } // 关闭结果集 public void close(){ try{ stmt.close(); }catch(SQLException e ){ e.printStackTrace(); errorMessage(e.getMessage());//任务7.5 } try{ con.close(); }catch(SQLException e ){ e.printStackTrace(); errorMessage(e.getMessage());//任务7.6 } } public String[][] show(){//显示全部数据 String sql = "SELECT * FROM employee"; ArrayList<HashMap<String, Object>> list = query(sql); String [][] a = new String[list.size()][list.get(0).size()]; for(int i=0;i<list.size();i++){ //任务6后加1: a[i][0]=ifNull(list.get(i).get("EMPNO"),0).toString(); a[i][1]=ifNull(list.get(i).get("FIRSTNME"),0).toString(); a[i][2]=ifNull(list.get(i).get("MIDINIT"),0).toString(); a[i][3]=ifNull(list.get(i).get("LASTNAME"),0).toString(); a[i][4]=ifNull(list.get(i).get("EDLEVEL"),0).toString(); } return a; } public void insertLine(String[] datas){//单行添加 String sql = "insert into employee (EMPNO,FIRSTNME,MIDINIT,LASTNAME,EDLEVEL) values(?,?,?,?,?)"; update(sql, datas); } public void insertLines(String[][] datas){//多行添加 String sql = "insert into employee (EMPNO,FIRSTNME,MIDINIT,LASTNAME,EDLEVEL) values(?,?,?,?,?)"; for(int i=0;i<datas.length;i++){ update(sql, datas[i]); } } public void workFive_query(){//子查询添加 String sql = "insert into employee select * from like_employee_zwh where EMPNO not in(select EMPNO from employee)"; update(sql, null); } public void delete(Object value){//删除行 String sql = "delete from employee where EMPNO=?"; update(sql, new Object[]{value}); } public void updateAllTable(String[] value){//修改整表 String sql = "update employee set FIRSTNME=?,MIDINIT=?,LASTNAME=?,EDLEVEL=? where EMPNO=?"; update(sql, value); } public Object ifNull(Object value,int type){//显示置空 if(type==0){ if(value.equals(" ")){value="空";} if(value.equals("")){value="空";} } if(type==1){ if(value.equals("空")){value=" ";} } return value; } public static void errorMessage(String Message){//错误信息 JOptionPane.showMessageDialog(null,Message,"Error",JOptionPane.INFORMATION_MESSAGE); } }
