Java SQL存储过程结果集可以';无法从仅包含1行的结果中获取数据

Java SQL存储过程结果集可以';无法从仅包含1行的结果中获取数据,java,sql-server,stored-procedures,resultset,Java,Sql Server,Stored Procedures,Resultset,当返回的行数超过1行时,我可以很好地执行存储过程并收集结果。但是,当过程返回1行ResultSet时,next()总是返回false,因此我无法获取该数据。你知道为什么会这样吗 这是我的密码: List<Panel> panels = new ArrayList<>(); try { String SPsql = "EXEC [dbo].[CR_Pick_Trim_Route] ?"; Class.forName("net.sour

当返回的行数超过1行时,我可以很好地执行存储过程并收集结果。但是,当过程返回1行ResultSet时,next()总是返回false,因此我无法获取该数据。你知道为什么会这样吗

这是我的密码:

List<Panel> panels = new ArrayList<>();
    try {
        String SPsql = "EXEC [dbo].[CR_Pick_Trim_Route] ?";
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://database", "username", "password");
        CallableStatement ps = conn.prepareCall(SPsql);
        ps.setEscapeProcessing(true);
        ps.setQueryTimeout(300);
        ps.setString(1, route);

        boolean hadResults = ps.execute();

        while (hadResults)
        {
            ResultSet reset = ps.getResultSet();

            while (reset.next()) {
                String route_name = reset.getString("route_name");
                String order_no = reset.getString("order_no");
                String product = reset.getString("pick_comp");
                String drop_no = reset.getString("drop_no");
                String desc = reset.getString("long_description");
                String analysisA = reset.getString("analysis_a");
                String consumer = reset.getString("comp_cons");
                String warehouse = reset.getString("pick_wh");
                String key = reset.getString("Key");
                int total = reset.getInt("pick_qty");
                String scanned = reset.getString("Scanned");
                String picked = reset.getString("picked");
                String original = reset.getString("original");

                Panel p = new Panel(route_name, order_no, drop_no, product, desc, analysisA, consumer, warehouse, (!picked.equals("No")), key, total, (scanned.contains("Y")), original);
                panels.add(p);
            }
            hadResults = ps.getMoreResults();
        }
List panels=new ArrayList();
试一试{
String SPsql=“EXEC[dbo].[CR_Pick_Trim_Route]?”;
Class.forName(“net.sourceforge.jtds.jdbc.Driver”).newInstance();
Connection conn=DriverManager.getConnection(“jdbc:jtds:sqlserver://database“,”用户名“,”密码“);
CallableStatement ps=conn.prepareCall(SPsql);
ps.setEscapeProcessing(真);
ps.setQueryTimeout(300);
ps.setString(1,路线);
布尔hadResults=ps.execute();
while(hadsults)
{
ResultSet reset=ps.getResultSet();
while(reset.next()){
String route_name=reset.getString(“route_name”);
String order_no=reset.getString(“order_no”);
String product=reset.getString(“pick_comp”);
String drop_no=reset.getString(“drop_no”);
String desc=reset.getString(“长描述”);
String analysisA=reset.getString(“analysis_a”);
String consumer=reset.getString(“comp_cons”);
String warehouse=reset.getString(“pick_wh”);
String key=reset.getString(“key”);
整数总计=重置.getInt(“拾取数量”);
已扫描字符串=reset.getString(“已扫描”);
String picked=reset.getString(“picked”);
String original=reset.getString(“original”);
面板p=新面板(路线名称、订单号、投料号、产品、描述、分析、消费者、仓库、(!picked.equals(“no”))、键、总计、(扫描的.包含(“Y”)、原件);
增加(p);
}
hadResults=ps.getMoreResults();
}

发现有人在下面的链接中提出了类似的问题:

希望能有帮助