在编写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出错,在数据库的表中没有
在使用PreparedStatement.executeUpdate()执行SQL时,如果数据库中没有匹配的数据,将不会返回更新计数。本文通过示例代码说明了当执行更新操作时,由于指定ID不存在导致executeUpdate()返回0的问题,提到了可能的原因,包括未提交事务和输入ID错误。
1298

被折叠的 条评论
为什么被折叠?



