执行 PreparedStatement.executeUpdate(); 没有返回值

在编写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出错,在数据库的表中没有

你可能感兴趣的:(Java,java,jdbc,executeUpdate())