jdbc调用存储过程获取多个结果集

来源:互联网 发布:gitlab 使用 windows 编辑:程序博客网 时间:2024/06/16 02:40
Connection conn = JdbcUtil.getConnection();        CallableStatement stmt = null;        //通过sqlserver exec方法调用存储过程        stmt = conn.prepareCall("EXEC dbo.sp_Query_GetVehiceTimeOuts '01'");        //jdbc通用语法为//        stmt = conn.prepareCall("{call dbo.sp_Query_GetVehiceTimeOuts(?)}");//        stmt.setString(1, "01");        boolean hashResult = stmt.execute();        while (true) {            //判断本次循环是否为数据集            if (hashResult) {                System.out.println("为数据集");                ResultSet rs = stmt.getResultSet();                // Do something with resultset ...                while (rs.next()){                    System.out.println(rs.getString(1));                }            } else {                System.out.println("本次不为数据集");                int updateCount = stmt.getUpdateCount();                if (updateCount == -1) {                    /*                        当updateCount为-1时,                        代表存储过程返回的最后一条数据集                        跳出循环                    */                    System.out.println("最后一次");                    break;                }                // Do something with update count ...            }            /*                每次判断下一个是否为了数据集                stmt.getMoreResults() 为 true表示下一次循环为数据集,false为空             */            hashResult = stmt.getMoreResults();            System.out.println(hashResult);        }

大体的逻辑就是
首先是死循环,
然后判断提交sql返回的收个数据是否为结果集,
如果是就进入结果集处理,如果不是,通过getUpdateCount方法获取下一个结果,并判断getUpdateCount结果是否为-1,-1代表最后一条结果集,当结果为-1时跳出循环,否则继续循环该段代码
原创粉丝点击