问题
1.更新和插入Emp数据
本案例要求使用JDBC想Emp表中插入和更新数据,详细要求如下:
1>.向Emp表中插入一条记录。其中为列 empno,enname,job,mgr,giredate,sal,comm,deptno的数据为1001,"rose","Analyst",7901,"2014-05-01",3000.00,500.00,10;
2>,更新职员ID为1001的薪资为4500
方案
Statement对象提供了executeUpdate()方法,该方法可以执行指定的sql语句,该语句可以是insert,update,delete。应用代码如下:
int result =stmt.executeUpdate(sql);
另外,我们在设计add方法时,该方法的参数是Emp类型,方法的声明如下:
public void add(Emp emp){}
之所以把Emp类作为add 方法的参数,是因为我们要保存的职员在Emp表的8个字段,也就是说有8项内容需要存入数据中。如果不用Emp类型作为add方法的参数类型,那么add方法将有8个参数,造成参数过多。对于数据库的表来说8个字段不算多,但是在企业中做项目的是时候,可能会有几十个字段的情况。所以使用对象封装方法参数是十分有必要的。另外,update方法的设计与add方法的设计类似。
Emp类是数据库表Emp和java实体类之间的映射,创建该类遵守一下规则:
1.如果类的成员变量的名字是xxx,那么为了更改或获取成员变量的值,即更改或获取属性的值,在类中可以使用getter或setter方法,方法的命名如下:
getXxx();用来获取属性xxx
setXxx();用来修改属性xxx
2.对于boolean类型的成员变量,即布尔逻辑类型的属性,允许使用"is"代替上述的“get”和“set”。
3.getter和setter方法必须是public的,因为外部要访问。
4.类中如果有构造方法,那么这个构造方法为public的并且是无参的。
步骤
步骤一:创建Emp类
该类为数据库表Emp与实体类之间的映射,代码如下所示:
?
package Entity;
public class Emp {
private int empNo;
private String ename;
private String job;
private int mgr;
private String hiredate;
private double sal;
private double comm;
private int deptno;
public Emp(){
super();
}
public Emp(int empNo,String ename,String job,int mgr,String hiredate,double sal,double comm,int deptno){
super();
this.empNo=empNo;
this.ename=ename;
this.job=job;
this.mgr=mgr;
this.hiredate=hiredate;
this.sal=sal;
this.comm=comm;
this.deptno=deptno;
}
public int getEmpNo() {
return empNo;
}
public void setEmpNo(int empNo) {
this.empNo = empNo;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public int getMgr() {
return mgr;
}
public void setMgr(int mgr) {
this.mgr = mgr;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
}
public double getSal() {
return sal;
}
public void setSal(double sal) {
this.sal = sal;
}
public double getComm() {
return comm;
}
public void setComm(double comm) {
this.comm = comm;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
}
步骤二:在EmpDAO类中添加add方法
?
public void add(Emp emp){
}
步骤三:拼写insert语句
在add方法中定义insert语句,代码如下所示:
?
public void add(Emp emp){
String sql="inset into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values("
+emp.getEmpNo()
+","
+"'"
+emp.getEname()
+"',"
+"'"
+emp.getJob()
+"',"
+emp.getMgr()
+","
+"to_date('"
+emp.getHiredate()
+"','yyyy-mm-dd'),"
+emp.getSal()
+","
+emp.getComm()+","+emp.getDeptno()+")";
}
}
步骤四:执行插入语句
?
首先创建数据库连接;然后通过连接创建Statement对象;最后使用Statement对象的updateExecute方法,执行插入语句并处理异常,代码如下所示:
?
public void add(Emp emp){
Connection con=null;
Statement stmt=null;
int flag=-1;
String sql="inset into emp(empno,en