我试图通过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
?
答案 0 :(得分:1)
要运行存储过程,您应该使用CallableStatement。请注意,您需要使用{call ...}
语法,如下所示:
CallableStatement cs = conn.prepareCall("{call procedure_name}");
ResultSet rs = cs.executeQuery();