English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JDBC CallableStatement 对象示例

下面的示例使用 CallableStatement 和下面的 getEmpName () MySQL 存储过程-

请确保已在 EMP 数据库中创建此存储过程。你可以使用 MySQL 查询浏览器来完成它。

DELIMITER $$
DROP PROCEDURE IF EXISTS `EMP`.`getEmpName` $$
CREATE PROCEDURE `EMP`.`getEmpName` 
   (IN EMP_ID INT, OUT EMP_FIRST VARCHAR(255))
BEGIN
   SELECT first INTO EMP_FIRST
   FROM Employees
   WHERE ID = EMP_ID;
END $$
DELIMITER ;

该示例代码是根据前几章中的环境和数据库设置编写的。

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

//步骤1.导入所需的软件包
import java.sql.*;
public class JDBCExample {
   //اسم برنامج JDBC و عنوان قاعدة البيانات
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //معلومات الاعتماد للقاعدة البيانات
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {
   Connection conn = null;
   CallableStatement stmt = null;
   try{
      //الخطوة 2: تسجيل برنامج JDBC
      Class.forName("com.mysql.jdbc.Driver");
      //الخطوة 3: إنشاء اتصال
      System.out.println("اتصال بالقاعدة البيانات..." );
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //الخطوة 4: تنفيذ الاستعلام
      System.out.println("إنشاء تعليمة..." );
      String sql = "{call getEmpName (?, ?)}";
      stmt = conn.prepareCall(sql);
      
      //في البداية يتم ربط المعاملات الإدخالية، ثم يتم ربط المعاملات الإدخالية
      int empID = 102;
      stmt.setInt(1, empID); //سيقوم بتعيين الرقم المرجعي 102
      //بسبب أن الثانية هي OUT، لذا يتم تسجيلها
      stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
      
      //استخدام طريقة execute لتنفيذ الإجراء المخزن.
      System.out.println("تنفيذ الإجراء المخزن..." );
      stmt.execute();
      //استخدام طريقة getXXX للبحث عن اسم الموظف
      String empName = stmt.getString(2);
      System.out.println("اسم الموظف مع الرقم المرجعي:" +) 
               empID + " is " + empName
      stmt.close();
      conn.close();
   catch(SQLException se){
      // معالجة خطأ JDBC
      se.printStackTrace();
   catch(Exception e){
      // معالجة خطأ Class.forName
      e.printStackTrace();
   }
      // لغلق الموارد
      try{
         if(stmt!=null)
            stmt.close();
      catch(SQLException se2){
      
      }
      try{
         if(conn!=null)
            conn.close();
      catch(SQLException se){
         se.printStackTrace();
      }
   }
   System.out.println("وداعاً!");
// انتهاء main
// انتهاء JDBCExample

الآن دعونا نشرح كيفية تجميع الأمثلة السابقة، كما يلي:

C:\>javac JDBCExample.java
C:\>

عند تشغيلJDBCExample،سيتم إنتاج النتيجة التالية-

C:\>java JDBCExample
الاتصال بقاعدة البيانات...
إنشاء جملة...
تنفيذ إجراء مخزن...
اسم الموظف مع الرقم التعريفي:102 هو Zaid
وداعاً!
C:\>