ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ResultSet 赋值问题

2022-06-25 17:36:53  阅读:160  来源: 互联网

标签:count execute rs ResultSet BaseDao 问题 sql pstm 赋值


问题:

//操作数据库的公共类
public class BaseDao {
...

    /*编写查询公共类*/
    public static ResultSet execute(Connection con,PreparedStatement preparedStatement,ResultSet resultSet,String sql,Object[] params) throws SQLException {
   		preparedStatement = con.prepareStatement(sql);

        for (int i = 0; i < params.length; i++) {
            preparedStatement.setObject(i+1,params[i]);
        }
        resultSet = preparedStatement.executeQuery();
        return resultSet;
	}
    
...
}

public class UserDaoImpl implements UserDao{
    //根据用户名或角色查询用户总数
@Override
public int getUserCount(Connection connection, String userName, int userRole) throws SQLException {
    PreparedStatement pstm = null;
    ResultSet rs = null;
    int count = 0;

    if(connection != null){
        StringBuffer sql = new StringBuffer();
        sql.append("select count(1) as count from smbms_user u,smbms_role r where u.userRole = r.id ");

        //用来传参数
        List<Object> list = new ArrayList<>();

        if(!StringUtils.isNullOrEmpty(userName)){
            sql.append("and u.userName like ? ");
            list.add("%"+userName+"%");
        }
        if(userRole > 0){
            sql.append("and u.userRole=?");
            list.add(userRole);
        }

        //输出完整sql
        System.out.println("sql:" + sql.toString());

        rs = BaseDao.execute(connection,pstm,rs,sql.toString(),list.toArray());

        if(rs.next()){
            count = rs.getInt("count");
        }
        BaseDao.closeSourse(null,pstm,rs);
    }
        return count;
    }
}

​ 在BaseDao.execute(Connection con,PreparedStatement pstm,ResultSet rs,String sql,Object[] params)中参数rs在最后已经被赋值了,那调用这个方法的方法中的rs应该也赋好了值,为何在UserDaoImpl中还需要写

rs = BaseDao.execute(connection,pstm,rs,sql.toString(),list.toArray());,用返回值对rs进行赋值,而不是在调用BaseDao.execute已经赋好了。

如果不用返回值对rs进行赋值,那后面的rs.next()就会报错。

解答:

​ 待解答。。。

标签:count,execute,rs,ResultSet,BaseDao,问题,sql,pstm,赋值
来源: https://www.cnblogs.com/zlaoyao/p/16411980.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有