JDBC - 在存储过程中使用 IN 参数



以下示例使用了 CallableStatement 以及以下 **getStudent()** MySQL 存储过程。此过程根据提供的 ID 返回学生详细信息。

确保您已在 TUTORIALSPOINT 数据库中创建此存储过程。您可以使用 MySQL 查询浏览器来完成此操作。

DELIMITER $$

DROP PROCEDURE IF EXISTS `TUTORIALSPOINT`.`getStudent` $$
CREATE PROCEDURE `TUTORIALSPOINT`.`getStudent` 
   (IN STUDENT_ID INT)
BEGIN
   SELECT STUDENTID, FIRSTNAME, LASTNAME, DEPT
   FROM STUDENTS 
   WHERE STUDENTID = STUDENT_ID;
END $$

DELIMITER ;

此示例代码是基于前面章节中完成的环境和数据库设置编写的。

使用带 IN 参数的存储过程获取学生详细信息示例

在此示例中,我们有四个静态字符串,包含数据库连接 URL、用户名、密码和一个调用存储过程并带有占位符的查询。现在,使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 connection.prepareCall() 方法创建了一个 CallableStatement 对象。使用 CallableStatement.setInt(),我们设置了 IN 参数。

现在,使用 CallableStatement.executeQuery(),我们运行了查询并将结果存储在结果集对象中。最后,迭代结果集并打印学生详细信息。

将以下示例复制并粘贴到 JDBCStoredProcedureExample.java 中,编译并运行如下:

import java.sql.*;

// STORED PROCEDURE example having only IN parameter
public class JDBCStoredProcedureExample {

   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "guest";
   static final String PASS = "guest123";
   static final String QUERY = "{call getStudent(?)}";

   public static void main(String args[]) {

      Connection conn = null;
      CallableStatement cstmt = null;
      try{
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connection to db  established.");

         cstmt = conn.prepareCall(QUERY);
         cstmt.setInt(1, 1000);

         System.out.println("Executing stored procedure..." );
         ResultSet rs = cstmt.executeQuery();

         while( rs.next()){
            System.out.println("StudentID: " + rs.getInt("StudentID"));
            System.out.println("FirstName: " + rs.getString("FirstName"));
            System.out.println("LastName: " + rs.getString("LastName"));
            System.out.println("Dept: " + rs.getString("Dept"));
         }
         cstmt.close();
         conn.close();
      }catch(SQLException sqle){
         sqle.printStackTrace();
      }        
   }
}

输出

现在让我们编译上述示例,如下所示:

C:\>javac JDBCStoredProcedureExample.java
C:\>

当您运行 **JDBCStoredProcedureExample** 时,它会产生以下结果:

C:\>java JDBCStoredProcedureExample
Connection to db  established.
Executing stored procedure...
StudentID: 1000
FirstName: Bonny
LastName: Agarwal
Dept: Mathematics

C:\>
jdbc-stored-procedure.htm
广告