JDBC PreparedStatement,如何选择和插入?

时间:2013-11-15 08:34:33

标签: java sql sql-server stored-procedures jdbc

我正在尝试通过JDBC执行存储过程,它具有简单的结构:

ALTER PROCEDURE test
AS BEGIN
SELECT ...
INSERT ...
END

问题是插入未发生。当我在管理工作室执行此程序时,它就可以了。

String query = "EXEC test";
PreparedStatement st = conn.prepareStatement(query);
st.execute();
ResultSet rs = st.getResultSet(); //result set is correct
int count = st.getUpdateCount(); //returns -1

有什么想法吗?感谢

3 个答案:

答案 0 :(得分:1)

由于您尝试调用的过程,您需要使用CallableStatement

  

用于执行SQL存储过程的接口。

CallableStatement callableStatement = conn.prepareCall(query);

此外,您的查询需要

String query = "{call test}"; 
// exec is used to execute the procedure from the sql console as such
// To execute a procedure using the java code, use call proc.

答案 1 :(得分:1)

你应该使用可调用语句而不是预备语句

CallableStatement cstmt = null;
try {
   String SQL = "{call procedureName}";
   cstmt = conn.prepareCall (SQL);
   . . .
}
catch (SQLException e) {
   . . .
}
finally {
   . . .
}

答案 2 :(得分:1)

您可以尝试将查询值更改为String query = "{call test()}",然后您可以使用

  

CallableStatement cs = connection.prepareCall(query);

     
    

cs.execute();

  

您可能需要提交以查看数据库中的更改。

  
    

conn.commit();