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

Esempio di oggetto CallableStatement JDBC

Il seguente esempio utilizza CallableStatement e la procedura di archiviazione MySQL getEmpName () di seguito:

Assicurati di aver creato questo procedura di archiviazione nell'archivio EMP. Puoi farlo utilizzando il browser di query 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 ;

Questo esempio di codice è stato scritto in base alle configurazioni dell'ambiente e del database dei capitoli precedenti.

Copia e incolla l'esempio seguente in JDBCExample.java e compila e esegui come segue:

// Passaggio 1. Importare i pacchetti necessari
import java.sql.*;
public class JDBCExample {
   // Nome del driver JDBC e URL del database
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   // Credenziali del database
   static final String USER = "username";
   static final String PASS = "password";
   
   public static void main(String[] args) {
   Connection conn = null;
   CallableStatement stmt = null;
   try{
      // Passo 2: Registrare il driver JDBC
      Class.forName("com.mysql.jdbc.Driver");
      // Passo 3: Creare la connessione
      System.out.println("Connettendo al database... ");
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      // Passo 4: Eseguire la query
      System.out.println("Creando statement... ");
      String sql = "{call getEmpName (?, ?)}";
      stmt = conn.prepareCall(sql);
      
      // Prima di tutto vincolare i parametri IN, quindi i parametri OUT
      int empID = 102;
      stmt.setInt(1, empID); // Questo imposterà l'ID su 102
      // Poiché il secondo parametro è OUT, registrarlo
      stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
      
      // Utilizzare il metodo execute per eseguire la procedura memorizzata.
      System.out.println("Eseguendo procedura memorizzata... ");
      stmt.execute();
      // Utilizzare il metodo getXXX per recuperare il nome del dipendente
      String empName = stmt.getString(2);
      System.out.println("Nome del dipendente con ID: " +) 
               empID + " is " + empName)
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //Gestisce l'errore JDBC
      se.printStackTrace();
   }
      //Gestisce l'errore Class.forName
      e.printStackTrace();
   }
      //Usato per chiudere le risorse
      try{
         if(stmt!=null)
            stmt.close();
      }catch(SQLException se2){
      
      }
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }
   }
   System.out.println("Arrivederci!");
//Fine main
//Fine JDBCExample

Ora compiliamo l'esempio sopra, come segue:

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

EsecuzioneJDBCExample,产生活如下结果-

C:\>java JDBCExample
Connettendo al database...
Creando statement...
Eseguendo procedura memorizzata...
Emp Name with ID:102 is Zaid
Arrivederci!
C:\>