我用的是jdk 6.0 ,mysql5.0, ideas8.0, tomcat 6.0
public int updateUser(User user) {
int result = 0;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = commons.creatCon();
ps = con.prepareStatement(SQL_UPDATE_USER); //这里跟新数据库记录
ps.setString(1, user.getPassword());
ps.setString(2, user.getEmail());
ps.setString(3, user.getFirstname());
ps.setString(4, user.getLastname());
ps.setString(5, user.getUsername());
result = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
commons.closeCon(con, ps, rs);
}
return result;
}
不明白,为什么我在创建ps的时候,数据库里面就有跟新了,明明参数还没有设置
这个在功能上倒不是问题,问题是如果我把这个sql语句作为批量更新的语句,而且有外键关联的话,就出问题了。这个时候就会报错。
public int updateUser(User user) {
int result = 0;
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = commons.creatCon();
ps = con.prepareStatement(SQL_UPDATE_USER); //这里跟新数据库记录
ps.setString(1, user.getPassword());
ps.setString(2, user.getEmail());
ps.setString(3, user.getFirstname());
ps.setString(4, user.getLastname());
ps.setString(5, user.getUsername());
result = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
commons.closeCon(con, ps, rs);
}
return result;
}
不明白,为什么我在创建ps的时候,数据库里面就有跟新了,明明参数还没有设置
这个在功能上倒不是问题,问题是如果我把这个sql语句作为批量更新的语句,而且有外键关联的话,就出问题了。这个时候就会报错。
但是我想说你的肯定是有问题的。
ps.executeUpdate()是更新操作,结果是反影响的行数,应该是一个整数,而不是一个结果集。
int row=ps.executeUpdate();
而不是
result = ps.executeUpdate();
result 是一个int类型 不是 rs 。
请问为什么在创建ps的时候会跟新数据库呢?
但是注意..
其实MYsql的JDBC是在数据库层是不支持预编译的..
也就是mysql的prepareStatement和statement是一样的..
只是prepareStatement可以防止一部分sql注入
又跑了好几次,没看错~~ ~~~~(>_<)~~~~ 呜呜 这事什么呀样的一种错误啊~~~~~~~~~~
加了一个 ps.clearParameters();
将就用吧,还是不知所以然郁闷