Java JDBC PreparedStatement,如何选择和插入?
我试图通过JDBC执行存储过程,它的结构很简单:Java JDBC PreparedStatement,如何选择和插入?,java,sql,sql-server,stored-procedures,jdbc,Java,Sql,Sql Server,Stored Procedures,Jdbc,我试图通过JDBC执行存储过程,它的结构很简单: ALTER PROCEDURE test AS BEGIN SELECT ... INSERT ... END 问题是插入没有发生。当我在ManagementStudio中执行此过程时,一切正常 String query = "EXEC test"; PreparedStatement st = conn.prepareStatement(query); st.execute(); ResultSet rs = st.getResultSet(
ALTER PROCEDURE test
AS BEGIN
SELECT ...
INSERT ...
END
问题是插入没有发生。当我在ManagementStudio中执行此过程时,一切正常
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
有什么想法吗?谢谢因为这是您试图调用的过程,所以您需要使用 用于执行SQL存储过程的接口 此外,您的查询需要
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.
您应该使用可调用语句而不是预处理语句
CallableStatement cstmt = null;
try {
String SQL = "{call procedureName}";
cstmt = conn.prepareCall (SQL);
. . .
}
catch (SQLException e) {
. . .
}
finally {
. . .
}
您可以尝试将query的值更改为
String query=“{call test()}”
,然后可以使用
CallableStatement cs=connection.prepareCall(查询)
cs.execute()
您可能需要提交才能查看数据库中的更改
conn.commit()
你遇到什么异常情况了吗?这段代码也可以,我的意思是没有例外,但是insert仍然没有发生。insert仍然没有发生。您应该执行语句并提交事务,insert才能生效。不幸的是,insert仍然没有发生。我已经添加了conn.commit(),insert现在执行,但出于某种原因,我有两次对不起,是我的错。调用在不同的位置执行了2次。我已经将自动提交设置为true,现在工作正常。谢谢你!
CallableStatement cstmt = null;
try {
String SQL = "{call procedureName}";
cstmt = conn.prepareCall (SQL);
. . .
}
catch (SQLException e) {
. . .
}
finally {
. . .
}