package com.jnzyjsxy.common;
import java.sql.ResultSet;
import javax.sound.midi.VoiceStatus;
import javax.swing.JOptionPane;
import org.omg.CORBA.PUBLIC_MEMBER;
/*
* 有关人员信息数据库操作的类
*/
public class PersonBean {
//定义字符串用于存储sql字符串
String sql;
//结果集类
ResultSet rs=null;
//声明字符串变量 存储从操作界面传过来的人员信息
String field1;
String field2;
String field3;
String field4;
String field5;
String field6;
String field7;
String field8;
String field9;
String field10;
String colname;//列名
String colvalue1;//列值1
String colvalue2;//列值2
/*
* 添加信息
*/
public void add(String f1,String f2,String f3,String f4,String f5,
String f6,String f7,String f8,String f9,String f10) {
//创建数据库对象 执行数据库里面的方法 链接数据库 执行sql语句
Database DB=new Database();
//将从添加界面传过来的值 付给成员变量
this.field1=f1;
this.field2=f2;
this.field3=f3;
this.field4=f4;
this.field5=f5;
this.field6=f6;
this.field7=f7;
this.field8=f8;
this.field9=f9;
this.field10=f10;
//判断穿过来的值是否为空 如果为空就显示提示语句
if (field2==null || field2.equals("")) {
JOptionPane.showMessageDialog(null, "请输入人员姓名", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
else if (field3==null||field3.equals("")) {
JOptionPane.showMessageDialog(null,"请输入性别","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field4==null||field4.equals("")) {
JOptionPane.showMessageDialog(null,"请输入出生年月","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field5==null||field5.equals("")) {
JOptionPane.showMessageDialog(null,"请输入民族","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field6==null||field6.equals("")) {
JOptionPane.showMessageDialog(null,"请输入地址","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field7==null||field7.equals("")) {
JOptionPane.showMessageDialog(null,"请输入部门","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field8==null||field8.equals("")) {
JOptionPane.showMessageDialog(null,"请输入薪酬","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
//构建插入字符串
//构建sql字符串时,注意字符型,两侧用单引号做定界符,int,float不用定界符
//传递过来的数据是字符型,
//为了插入int数据,进行类型转换-Integer.parseInt(field1)
//在此PersonID,DeptID均为int类型,Sqlary为float类型,与书上不同
else {
sql="insert into Person(PersonID,Name,Sex,Birth,Nat,Address,DeptID,Salary,Assess,Other) values("+Integer.parseInt(field1)+ ",'"+field2+"','"+field3+"','"+field4+"','"+field5+"','"+field6+"',"+Integer.parseInt(field7)+","+Float.parseFloat(field8)+",'"+field9+"','"+field10+"')";
System.out.println(sql);
//打开数据库连接
try {
DB.openConn();
//执行sql语句
DB.executeUpdate(sql);
//提示信息
JOptionPane.showMessageDialog(null, "你成功添加一条新的纪录");
} catch (Exception e) {
// TODO: handle exception
//出现异常 ,给出提示
System.out.println(e);
JOptionPane.showMessageDialog(null, "保存失败 ","错误!", JOptionPane.ERROR_MESSAGE);
}
//关闭语句对象和链接对象
finally{
DB.closeStmt();
DB.closeConn();
}
}
}
/*
* 修改设备信息
*/
public void modify(String f1,String f2,String f3,String f4,String f5,
String f6,String f7,String f8,String f9,String f10) {
Database DB=new Database();
this.field1=f1;
this.field2=f2;
this.field3=f3;
this.field4=f4;
this.field5=f5;
this.field6=f6;
this.field7=f7;
this.field8=f8;
this.field9=f9;
this.field10=f10;
if (field2==null || field2.equals("")) {
JOptionPane.showMessageDialog(null, "请输入人员姓名", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
else if (field3==null||field3.equals("")) {
JOptionPane.showMessageDialog(null,"请输入性别","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field4==null||field4.equals("")) {
JOptionPane.showMessageDialog(null,"请输入出生年月","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field5==null||field5.equals("")) {
JOptionPane.showMessageDialog(null,"请输入民族","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field6==null||field6.equals("")) {
JOptionPane.showMessageDialog(null,"请输入地址","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field7==null||field7.equals("")) {
JOptionPane.showMessageDialog(null,"请输入部门","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
else if (field8==null||field8.equals("")) {
JOptionPane.showMessageDialog(null,"请输入薪酬","错误",
JOptionPane.ERROR_MESSAGE);
return;
}
//构建插入字符串
//构建sql字符串时,注意字符型,两侧用单引号做定界符,int,float不用定界符
//传递过来的数据是字符型,
//为了插入int数据,进行类型转换-Integer.parseInt(field1)
//在此PersonID,DeptID均为int类型,Sqlary为float类型,与书上不同
else {
sql="updata into Person(PersonID,Name,Sex,Birth,Nat,Address,DeptID,Salary,Assess,Other) values("+Integer.parseInt(field1)+ ",'"+field2+"','"+field3+"','"+field4+"','"+field5+"','"+field6+"',"+Integer.parseInt(field7)+","+Float.parseFloat(field8)+",'"+field9+"','"+field10+"')";
System.out.println(sql);
//打开数据库连接
try {
DB.openConn();
//执行sql语句
DB.executeUpdate(sql);
//提示信息
JOptionPane.showMessageDialog(null, "你成功修改一条新的纪录!");
} catch (Exception e) {
// TODO: handle exception
//出现异常 ,给出提示
System.out.println(e);
JOptionPane.showMessageDialog(null, "保存失败 ","错误!", JOptionPane.ERROR_MESSAGE);
}
finally{
DB.closeStmt();
DB.closeConn();
}
}
}
/*
* 删除信息 根据传过来的PersonId 删除信息
*/
public void delete(String f1) {
//创建数据库对象
Database DB=new Database();
this.field1=f1;//获取传递过来的参数
//构建删除人员的字符串
sql="delete from Person where PersonID="+Integer.parseInt(field1);
try {
DB.openConn();
DB.executeUpdate(sql);
System.out.println(sql);
JOptionPane.showMessageDialog(null, "成功删除一条新的纪录");
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
JOptionPane.showMessageDialog(null, "删除失败", "错误", JOptionPane.ERROR_MESSAGE);
}
finally{
DB.closeStmt();
DB.closeConn();
}
}
/*
* 根据PersonID查询人员信息,返回人员信息各列值组成的字符数组
*/
public String[] search(String f1) {
Database DB=new Database();
this.field1=f1;
//创建字符串数组 用于记录查询的数据
String[] s =new String[10];
sql="select * from Person where PersonID="+field1;
try{
DB.openConn();//连接数据库
//执行查询,查询结果付给rs,rs为结果集
rs=DB.executeQuery(sql);
//如果rs.next为true
if (rs.next()) {
//获取指定的值
//说明:PersonID'DeptId salary均不是String类型
//但在此简化处理,把取出值看作字符串,赋值给字符数组元素
//方便统一待会返回值
s[0]=rs.getString("PersonID");
s[1]=rs.getString("Name");
s[2]=rs.getString("Sex");
s[3]=rs.getString("Birth");
s[4]=rs.getString("Nat");
s[5]=rs.getString("Address");
s[6]=rs.getString("DeptID");
s[7]=rs.getString("Salary");
s[8]=rs.getString("Assess");
s[9]=rs.getString("Other");
}else {
s=null;
}
}catch(Exception e){
}finally {
DB.closeStmt();
DB.closeConn();
}
return s;
}
/*
* 人员信息综合查询
* 从PersonID和Dept表查询所有Where DeptID=Person.DeptID部门编号相等的记录
*/
public String[][] searchAllForNode() {
//初始化数据库
Database DB=new Database();
//创建二维数组 存储查找到的符号条件记录的咯列值
//由于符合条件的记录可能有多行,所以需要二维数组
String[][] sn =null;
int row=0;//存储行数
int i=0;//循环变量
//构建联合查询语句 查询条件where DeptID=Person.DeptID
//从Person,Dept表查询Where Dept.DeptID=Person.DeptID 条件的指定字段
sql="select PersonID,Name,Sex,Dept.DeptID as DeptID,B_Dept,S_Dept, Salary,Assess from Dept,Person where Dept.DeptID=Person.DeptID order by PersonID";
try {
DB.openConn();
// TODO: handle exception
//执行查询
rs=DB.executeQuery(sql);
//rs.last()--将记录指针移动到最后记录上,该方法类型为boolean
//如果指针位于有效位,则返回true;如果结果集中不存在任何行,则返回false
//即如果rs中有记录
if (rs.last()) {
row=rs.getRow();//获取结果集rs中记录数,即行数
}
//如果row==0说明rs没有记录 既没有查到符号条件的记录
if (row==0) {
//初始化二维数组1行6列 每个元素为空白字符
sn=new String[1][6];
sn[0][0]="";
sn[0][1]="";
sn[0][2]="";
sn[0][3]="";
sn[0][4]="";
sn[0][5]="";
}
//否则rs不等于0
else {
//根据行数row 初始化二维数组sn
sn=new String[row][6];
//让rs指到第一条数据
rs.first();
//将指针移动到上一行 由于上一条语句记录指针到第一条数据
//执行完这条语句后 记录指针移动的rs的头部分
//执行该条语句的作用是保障所有的记录都能满足rs.next()条件
rs.previous();
//结果集下移一条数据 返回true 执行循环
//如果没有执行re.previons()语句 在执行rs.next(),第一天记录就略过了。
while (rs.next()) {
sn[i][0]=rs.getString("PersonID");
sn[i][1]=rs.getString("Name");
sn[i][2]=rs.getString("Sex");
//一级部门-二级部门,存储到sn[i][3]元素中
sn[i][3]=rs.getString("B_Dept")+"-"+rs.getString("s_Dept");
sn[i][4]=rs.getString("Salary");
sn[i][5]=rs.getString("Assess");
i++;
}
}
}catch (Exception e) {
}finally{
DB.closeStmt();
DB.closeConn();
}
return sn;
}
/*
* 修改Person表中 指定用户的部门信息,即修改Person表中的DeptID字段值
*/
public void updateDept(String f1,String f8) {
Database DB=new Database();
this.field1=f1;//PersonID
this.field8=f8;//salary 薪资字段
sql="update Person set Salary =" +Float.parseFloat(field8)+" where PersonID ="+Integer.parseInt(field1);
try {
DB.openConn();
DB.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "劳资更改成功");
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
JOptionPane.showMessageDialog(null, "更新失败", "失败",JOptionPane.ERROR_MESSAGE);
}
}
/*
* 修改Person表中指定考核信息 即修改Person表中Assess字段值
*/
public void updateAssess(String f1,String f9) {
Database DB=new Database();
this.field1=f1;
this.field9=f9;//考核字段
sql="update Person set Assess = '"+field9 +"' where PersonID ="+Integer.parseInt(field1);
try{
DB.openConn();
DB.executeUpdate(sql);
JOptionPane.showMessageDialog(null, "人员考核成功");
}catch(Exception e){
System.out.println(e);
JOptionPane.showMessageDialog(null, "更新失败", "失败",
JOptionPane.ERROR_MESSAGE);
}
}
/*
* 从Person表查询所有的人员信息 DeptID列显示部门名称
*/
public String[][] searchAll() {
Database DB=new Database();
//定义二维数组
String[][] sn=null;
int row=0;//行数
int i=0;//循环变量
//查询sql字符串
sql="select * from Person order by PersonID";
try {
DB.openConn();
rs=DB.executeQuery(sql);
if (rs.last()) {
row=rs.getRow();//获取结果集rs中记录数,即行数
}
//如果row==0说明rs没有记录 既没有查到符号条件的记录
if (row==0) {
//初始化二维数组1行6列 每个元素为空白字符
sn=new String[1][6];
sn[0][0]="";
sn[0][1]="";
sn[0][2]="";
sn[0][3]="";
sn[0][4]="";
sn[0][5]="";
}
//否则rs不等于0
else {
//根据行数row 初始化二维数组sn
sn=new String[row][6];
//让rs指到第一条数据
rs.first();
//将指针移动到上一行 由于上一条语句记录指针到第一条数据
//执行完这条语句后 记录指针移动的rs的头部分
//执行该条语句的作用是保障所有的记录都能满足rs.next()条件
rs.previous();
while (rs.next()) {
sn[i][0]=rs.getString("PersonID");
sn[i][1]=rs.getString("Name");
sn[i][2]=rs.getString("Birth");
sn[i][3]=rs.getString("Nat");
sn[i][4]=rs.getString("Address");
//创建部门操作类DeptBean的对象
DeptBean dBean=new DeptBean();
sn[i][5]=dBean.getDepstr(rs.getString("DeptID"));
i++;
}
}
}catch (Exception e) {
// TODO: handle exception
}finally {
DB.closeStmt();
DB.closeConn();
}
return sn;
}
/*
* 获得新的Person值
*/
public int getId() {
Database DB=new Database();
int ID=1;
//查询sql,从Person表获取PersonID列的最大值
sql="select max(PersonID) from Person";
try {
DB.openConn();
rs=DB.executeQuery(sql);
if (rs.next()) {
ID=rs.getInt(1)+1;
}else {
ID=1;
}
} catch (Exception e) {
// TODO: handle exception
}
finally {
DB.closeStmt();
DB.closeConn();
}
return ID;
}
/*
* 获得DeptID
*/
public String getDeptId(String f1) {
Database DB=new Database();
//根据传递过来的PersonID 即根据员工编号,查DeptID
sql="select DeptID from Person where PersonID = "+f1;
String deptid=null;
try {
DB.openConn();
rs=DB.executeQuery(sql);
if (rs.next()) {
deptid=rs.getString("DeptID");
}else {
deptid="";
}
} catch (Exception e) {
// TODO: handle exception
}finally {
DB.closeStmt();
DB.closeConn();
}
return deptid;
}
/*
* 根据PersonID查找员工姓名
*/
public String getName(String f1) {
Database DB=new Database();
sql="select Name from Person where PersonID ="+f1;
String name=null;
try {
DB.openConn();
rs=DB.executeQuery(sql);
if (rs.next()) {
name =rs.getString("Name");
}
else {
name="";
}
} catch (Exception e) {
// TODO: handle exception
}finally {
DB.closeStmt();
DB.closeConn();
}
return name;
}
/*
* 从perSon表中查找所有PersonID Name字段 存储在s数组中 返回
*/
public String[] getAllId() {
String[] s=null;
int row=0;
int i=0;
Database DB=new Database();
sql="select PersonID,Name from Person order by PersonID";
try {
DB.openConn();
rs=DB.executeQuery(sql);
if (rs.last()) {
row=rs.getRow();
}
if (row==0) {
s=null;
}else {
s=new String[row];
rs.first();
rs.previous();
while (rs.next()) {
s[i]=rs.getString(1)+"-"+rs.getShort(2);
i++;
}
}
} catch (Exception e) {
// TODO: handle exception
System.out.println(e);
}finally {
DB.closeStmt();
DB.closeConn();
}
return s;
}
}
庞玉栋个人博客、人生苦短-我用Python
鲁公网安备37081102000289号