在编写JDBC时,遇到执行 PreparedStatement.executeUpdate(); 没有返回值,
例如下面的代码:
/**
* sql
* 根据uids 更新 uname
*/
@Override
public boolean updateIdOfUserInfo(UserInfo userinfo) {
// TODO Auto-generated method stub
boolean flag=false;
Connection conn=null;
PreparedStatement psmt=null;
ResultSet rs=null;
try {
String sql="update userinfo set uname=? where uids=?";
conn=this.openConnections();
psmt=conn.prepareStatement(sql);
psmt.setString(1,userinfo.getUname());
psmt.setInt(2, userinfo.getUids());
int num=psmt.executeUpdate();//debug执行到这一步没有返回值,num还是0
if(num>0){
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
this.closeZiYuan(conn, psmt, rs);
}
return flag;
}
测试代码:
/**
* 更新
*/
@Test
public void updateIdOfUserInfo(){
UserInfo userinfo=new UserInfo(7,"www","随便写");
UserInfoDao udao=new UserInfoDaoImpl();
boolean test=udao.updateIdOfUserInfo(userinfo);//执行结果是test=false
if(test){
System.out.println("更新成功");
}
}
结果:
lianjie ok
//没有出现 “更新成功”
上面出现的问题,原因是:
UserInfo userinfo=new UserInfo(7,"www","随便写");
所提交的id(7)在数据库中没有该条数据,所以无法执行executeUpdate(); 这条语句,num得到的返回值依然为0.
没有该条数据的原因
1.操作数据库时没有commit,数据未真正存入数据库的表中
2.
UserInfo userinfo=new UserInfo(7,"www","随便写");
填写的id出错,在数据库的表中没有