通过JDBC在MSSQL中运行存储过程的正确方法

时间:2015-10-12 14:37:50

标签: java sql-server jdbc

我试图通过jdbc在MSSQL中运行存储过程。我看到它的方式我有两个选择:

Connection conn = //Code that I know gets the correct connection
Statement stmt = conn.prepareStatement(request.query);
ResultSet resultSet = stmt.executeQuery(request.query);

使用此查询运行正常但代码抛出异常:"Error: The statement did not return a result set."

或者

PreparedStatement stmt = conn.prepareStatement(request.query);
ResultSet resultSet = stmt.executeQuery();

同样的事情也是如此。这些基本上是在引擎盖下做同样的事情吗?我知道我可以使用stmt.executeUpdate(),但我希望得到一个ResultSet,这样我就可以进行后期处理。

哪种方式正确?我该怎么做才能保证返回ResultSet

我查看了thisthis问题,答案无效/适用。

1 个答案:

答案 0 :(得分:1)

要运行存储过程,您应该使用CallableStatement。请注意,您需要使用{call ...}语法,如下所示:

CallableStatement cs = conn.prepareCall("{call procedure_name}");
ResultSet rs = cs.executeQuery();