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);
}
}