Java-执行存储过程

时间:2019-02-06 20:32:42

标签: java sql sql-server procedure

我需要使用Java从sql执行过程。

我已经在exec MyProcedure之类的sql管理中调用了我的过程,并且运行良好。 但是,当我在Java代码中使用它时,会出现错误:

  

该语句未返回结果集。

这是我的代码:

    ResultSet rs = null;
    PreparedStatement cs=null;
    Connection conn=DbM.dbConnect();

    try {
        cs= conn.prepareStatement("exec MyProcedure ?,?,?");
        cs.setEscapeProcessing(true);
        cs.setQueryTimeout(90);

        cs.setString(1, "1");
        cs.setString(2, "2019-01-01");
        cs.setString(3, "2019-02-02");

        rs = cs.executeQuery();
        ArrayList<Data> listaObjectX = new ArrayList<Data>();
        while (rs.next()) {

            Data to = new Data();
            to.setEmployeNo(rs.getString(1));
            to.setValidFrom(rs.getDate(2));
            to.setValidTo(rs.getDate(3));

            listaObjectX.add(to);

        } } catch (SQLException se) {
            System.out.println("Error al ejecutar SQL"+ se.getMessage());
            se.printStackTrace();
            throw new IllegalArgumentException("Error al ejecutar SQL: " + se.getMessage());

        } finally {

            try {

                rs.close();
               cs.close();
                conn.close();;

            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }

运行代码时出现错误:

  

该语句未返回结果集。

任何想法如何解决此问题?

如果我输入cs = conn.prepareStatement(“ exec MyProcedure(?,?,?)”); 我收到错误消息

“ @ P0”附近的语法不正确

1 个答案:

答案 0 :(得分:0)

如果此过程未返回结果,则应使用execute()而不是executeQuery(),后者应始终返回ResultSet。