Annonces GOOGLE

Présentation du BLOG

Ce BLOG est dédié à la programmation en JAVA J2EE

mardi 17 février 2009

Oracle Fusion Middleware

Je viens de créer un site sur le sujet Oracle Fusion Middleware et Oracle Application Development FrameWork : www.oracle-adf.com.
Objectif : Présenter mes offres formations et la documentation autour de ces outils.

samedi 13 décembre 2008

Java Collection ArrayList

Ci-dessous un exemple qui permet de récuppérer une liste de services d'une société (Service Informatique, Communication, ...) d'une base de données, et met cette liste dans une collection de type ArrayList.
Cet exemple intègre trois classes : 
  • Class Service : composée seulement des attributs de Service :
public class Service {
String codeService;
String libelleService;
}
  • Class SelectServices : Permet de se connecter à la base de données ( Méthode connect), et de charger le contenu de la table Service de la base de données dans une ArrayList (Méthode ExtractionServices) : 
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.*;
import java.util.*;

public class SelectServices {
Connection conn;
    public void connect() {
        try
        {   
         DriverManager.registerDriver(new com.mysql.jdbc.Driver ());
           conn = DriverManager.getConnection
                         ("jdbc:mysql://localhost:3306/test", "root", "root");              
        }
        catch(SQLException sqle){
        System.out.println(sqle.toString());
        }
        finally{
        }
    }
    public List ExtractionServices() {
     List listeServices = new ArrayList();
     Service service;
        try {
            this.connect();
            CallableStatement SelectSRV = 
                this.conn.prepareCall("SELECT CODE, LIBELLE FROM SERVICE");
            ResultSet rs = SelectSRV.executeQuery();
            while (rs.next()) {
             // Allimentation ArrayList listeServices
             service = new Service();
             service.codeService = rs.getString("CODE");
             service.libelleService = rs.getString("LIBELLE");
             listeServices.add(service);          
            }
            rs.close();
            SelectSRV.close();
            //return ListProjets;
            this.conn.close();
        } catch (SQLException sqle) {
            System.out.println(sqle.toString());
        } finally {
        }
        return listeServices;
    }
}
  • Classe Appel : Classe permettant de tester si la collection est bien allimentée : 
import java.util.*;
public class Appel {
public static void main(String args[]) {
        SelectServices S = new SelectServices();
List LS = new ArrayList(); 
LS = S.ExtractionServices();
Iterator it = LS.iterator();
while (it.hasNext()) 
{
 Service service = it.next();
 System.out.println(service.libelleService);  
}
LS = new LinkedList();
}
}


mercredi 10 décembre 2008

Hibernate presentation

J'ai trouvé une documentation claire et complète sur Hibernate à l'adresse : 
http://www.hibernate.org/hib_docs/v3/reference/fr-FR/html/index.html

jeudi 27 novembre 2008

registerOutParameter OracleTypes CURSOR

Dans Oracle Developer 11g, l'appel :
registerOutParameter(2,oracle.jdbc.driver.OracleTypes.CURSOR)
génère une erreur, alors que dans JDeveloper 10g il s'exécute, et permet d'enregistrer un paramètre OUT de type CURSOR.

Lorsque je remplace dans JDeveloper 11g oracle.jdbc.driver.OracleTypes.CURSOR par -10 :
registerOutParameter(2,-10)
ça marche !!!

mardi 25 novembre 2008

JAVA PL SQL REF CURSOR

Objectif : Dans une méthode JAVA, appeler une procédure stockée qui retourne un REF CURSOR.

Procédure stockée :
La procédure stockée SELECT PROJET retourne un curseur :
PROCEDURE SELECT_PROJETS
    (LISTE_PROJETS OUT CURSEUR_PROJETS);


La classe java qui lit les données à partir du curseur :


import java.sql.*;

public class TEST2 {
    public TEST2() {
    }
    public static void main(String[] args) {
            try
            {
             
                ConnectionDB cnxDB = new ConnectionDB();
                cnxDB.connect();
                    
                DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
                
                
               CallableStatement SelectProjects = cnxDB.conn.prepareCall("{call PKG_SERVICE.EMPLOYES_SERVICE(?,?)}");         
                
                SelectProjects.setString(1,"INFO");
                
                SelectProjects.setFetchSize(100);
                SelectProjects.registerOutParameter(2,oracle.jdbc.driver.OracleTypes.CURSOR);
                SelectProjects.executeQuery();
                ResultSet rs = (ResultSet)SelectProjects.getObject(2);
//                SelectProjects = cnxDB.conn.prepareCall("{ call PKG_SERVICE.EMPLOYES_SERVICE(?) }");
               // SelectProjects.setString("P_CODE_SERVICE",args[0]);
               // SelectProjects.execute();
               while (rs.next())
               {
               
                System.out.print(rs.getString("NOM"));
                System.out.println(rs.getString("MAIL"));
               }
               rs.close();
             SelectProjects.close();
              //return ListProjets;
            }
            catch(SQLException sqle){
            System.out.println(sqle.toString());
          }
          finally{
                //return ListProjets;
          }
    }

}

mercredi 12 novembre 2008

ClassNotFoundException: oracle.jdbc.driver.OracleDriver

Lors de l'accès à une base de données ORACLE, il est possible que le sysème ne retrouve pas la Classe OracleDriver, et affiche l'erreur :  java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver.

Dans ce cas, il faut ajouter dans la variable d'environnement CLASSPATH le fichier jar ojdbc14.jar. Ce fichier se trouve dans le répertoire JDeveloper :  jdevstudio10134\jdbc\lib\ojdbc14.jar.

JAVA J2EE Package Procedure PL SQL stockee

Notre objectif dans cette note est d'utiliser à partir d'une classe JAVA un package PL/SQL pour insérer des données dans une table ORACLE.

Pour accéder à la base de données ORACLE, nous utiliserons la classe ConnectionDB décrite dans la note : 

http://java-programmation.blogspot.com/2008/11/jdeveloper-jdbc-thin-acces-base-de.html

Objets ORACLE utilisés dans cet exemple :

  • Utilisateur (Schéma) : NFP121
  • Table : SERVICE
  • Package stocké : PKG_SERVICE
  • Procédure stockée : INSERT_SERVICE

Ci-dessous le code PL/SQL du package utilisé :

create or replace PACKAGE "PKG_SERVICE" AS

PROCEDURE INSERT_SERVICE

(P_CODE IN VARCHAR2,

P_LIBELLE IN VARCHAR2);

PROCEDURE UPDATE_SERVICE

(P_CODE IN VARCHAR2,

P_LIBELLE IN VARCHAR2);

END;

/

create or replace PACKAGE BODY "PKG_SERVICE" AS

PROCEDURE INSERT_SERVICE

(P_CODE IN VARCHAR2,

P_LIBELLE IN VARCHAR2)

IS

BEGIN

INSERT INTO SERVICE

(CODE, LIBELLE)

VALUES

(P_CODE, P_LIBELLE);

END INSERT_SERVICE;

PROCEDURE UPDATE_SERVICE

(P_CODE IN VARCHAR2,

P_LIBELLE IN VARCHAR2)

IS

BEGIN

UPDATE SERVICE

SET LIBELLE = P_LIBELLE

WHERE CODE = P_CODE;

END UPDATE_SERVICE;

END;

/

Le code de la classe JAVA qui utilise la procédure stockée INSERT_SERVICE : 

package gestionemployes;

import java.sql.CallableStatement;

import java.sql.SQLException;

import java.sql.*;

public class TEST1 {

    public TEST1() {

    }

  public static void main(String[] args) {  


    try{

        ConnectionDB cnxDB = new ConnectionDB();

        cnxDB.connect();

        CallableStatement ServiceInsertCall;     

        ServiceInsertCall = cnxDB.conn.prepareCall("{ call PKG_SERVICE.INSERT_SERVICE(?, ?) }");

        ServiceInsertCall.setString("P_CODE",args[0]);       

        ServiceInsertCall.setString("P_LIBELLE",args[1]);

        ServiceInsertCall.execute();

        System.out.println("Service insere");

    }

    catch(SQLException sqle){

        System.out.println(sqle.toString());}   

    }

}


Ci-dessous un document pdf décrivant comment créer les packages PL/SQL : 

Les copies d'écrans de l'exécution du programme JAVA :