public boolean doCreate(Emp emp) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm,photo) VALUES (?,?,?,?,?,?,?)";
try {
pstmt = this.conn.prepareStatement(sql);
String sql2 = "SELECT empno FROM emp WHERE empno='"+emp.getEmpno()+"'" ;
pstmt = this.conn.prepareStatement(sql2);
ResultSet rs = stmt.executeQuery() ;
if(rs.next()){
return false;
}else{
pstmt.setInt(1, emp.getEmpno());
pstmt.setString(2, emp.getEname());
pstmt.setString(3, emp.getJob());
pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
pstmt.setFloat(5, emp.getSal());
pstmt.setFloat(6, emp.getComm());
pstmt.setString(7, emp.getPhoto());
int count = pstmt.executeUpdate(); // 执行更新,返回更新的记录数
if (count > 0) {
flag = true;
}
}
} catch (Exception e) {
throw e;
} finally {
try {
pstmt.close();
} catch (Exception e) {
}
}
return flag;
}
上例报“java.sql.SQLException: 无效的列索引”问题,改为下面的顺序后,问题解决public boolean doCreate(Emp emp) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm,photo) VALUES (?,?,?,?,?,?,?)";
try {
String sql2 = "SELECT empno FROM emp WHERE empno='"+emp.getEmpno()+"'" ;
Statement stmt = this.conn.createStatement();
ResultSet rs = stmt.executeQuery(sql2) ;
if(rs.next()){
return false;
}else{
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1, emp.getEmpno());
pstmt.setString(2, emp.getEname());
pstmt.setString(3, emp.getJob());
pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
pstmt.setFloat(5, emp.getSal());
pstmt.setFloat(6, emp.getComm());
pstmt.setString(7, emp.getPhoto());
int count = pstmt.executeUpdate(); // 执行更新,返回更新的记录数
if (count > 0) {
flag = true;
}
}
} catch (Exception e) {
throw e;
} finally {
try {
pstmt.close();
} catch (Exception e) {
}
}
return flag;
}
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm,photo) VALUES (?,?,?,?,?,?,?)";
try {
pstmt = this.conn.prepareStatement(sql);
String sql2 = "SELECT empno FROM emp WHERE empno='"+emp.getEmpno()+"'" ;
pstmt = this.conn.prepareStatement(sql2);
ResultSet rs = stmt.executeQuery() ;
if(rs.next()){
return false;
}else{
pstmt.setInt(1, emp.getEmpno());
pstmt.setString(2, emp.getEname());
pstmt.setString(3, emp.getJob());
pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
pstmt.setFloat(5, emp.getSal());
pstmt.setFloat(6, emp.getComm());
pstmt.setString(7, emp.getPhoto());
int count = pstmt.executeUpdate(); // 执行更新,返回更新的记录数
if (count > 0) {
flag = true;
}
}
} catch (Exception e) {
throw e;
} finally {
try {
pstmt.close();
} catch (Exception e) {
}
}
return flag;
}
上例报“java.sql.SQLException: 无效的列索引”问题,改为下面的顺序后,问题解决public boolean doCreate(Emp emp) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm,photo) VALUES (?,?,?,?,?,?,?)";
try {
String sql2 = "SELECT empno FROM emp WHERE empno='"+emp.getEmpno()+"'" ;
Statement stmt = this.conn.createStatement();
ResultSet rs = stmt.executeQuery(sql2) ;
if(rs.next()){
return false;
}else{
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1, emp.getEmpno());
pstmt.setString(2, emp.getEname());
pstmt.setString(3, emp.getJob());
pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
pstmt.setFloat(5, emp.getSal());
pstmt.setFloat(6, emp.getComm());
pstmt.setString(7, emp.getPhoto());
int count = pstmt.executeUpdate(); // 执行更新,返回更新的记录数
if (count > 0) {
flag = true;
}
}
} catch (Exception e) {
throw e;
} finally {
try {
pstmt.close();
} catch (Exception e) {
}
}
return flag;
}
public boolean doCreate(Emp emp) throws Exception {
boolean flag = false;
PreparedStatement pstmt = null;
try {
String sql2 = "SELECT empno FROM emp WHERE empno=:empno";
pstmt = this.conn.prepareStatement(sql2);
pstmt.setInt(1, emp.getEmpno());
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
return false;
} else {
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal,comm,photo) VALUES (?,?,?,?,?,?,?)";
pstmt = this.conn.prepareStatement(sql);
pstmt.setInt(1, emp.getEmpno());
pstmt.setString(2, emp.getEname());
pstmt.setString(3, emp.getJob());
pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime()));
pstmt.setFloat(5, emp.getSal());
pstmt.setFloat(6, emp.getComm());
pstmt.setString(7, emp.getPhoto());
int count = pstmt.executeUpdate(); // 执行更新,返回更新的记录数
if (count > 0) {
flag = true;
}
}
} catch (Exception e) {
throw e;
} finally {
try {
pstmt.close();
} catch (Exception e) {
}
}
return flag;
}