gpt4 book ai didi

java - JDBC 存储过程调用

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:52 25 4
gpt4 key购买 nike

我创建了一个存储过程如下:

//mysql中的存储过程

DELIMITER $$
CREATE PROCEDURE `bank`.`hello` (in id varchar(20),in pass varchar(20))
BEGIN
insert into admin(username,password) values (id,pass);
END $$
DELIMITER ;

我在 java 中调用存储过程如下:

//使用JDBC调用存储过程

package StoredProcEx;
import java.sql.*;
public class StoredProcEx {
public static void main(String arg[]){
try{

Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bank","root","root");
//PreparedStatement stmt=con.prepareStatement("insert into admin values(?,?)");
CallableStatement stmt=con.prepareCall("{?=call hello(?,?)}");
stmt.setString(1,"birender");
stmt.setString(2,"admin");
stmt.execute();
//stmt.execute();
}
catch(ClassNotFoundException ce){
ce.printStackTrace();
}
catch(SQLException se){
se.printStackTrace();
}
catch(Exception e){}
}
}

但它显示如下编译时异常:

可以为存储函数调用的返回值设置 IN 参数。

最佳答案

请使用

CallableStatement stmt=con.prepareCall("{call hello(?,?)}");

代替

CallableStatement stmt=con.prepareCall("{?=call hello(?,?)}");

首先?在您的代码中用于返回类型

关于java - JDBC 存储过程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29249130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com