簡體   English   中英

JDBC存儲過程調用

[英]JDBC stored procedure call

我創建了一個存儲過程,如下所示:

// 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(?,?)}");

首先? 在您的代碼中用於返回類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM