Pour accéder à une base de données directement à partir
d'un client d'application Java™ Platform, Enterprise Edition (Java EE), vous devez extraire un objet javax.sql.DataSource à partir d'une référence de ressource configurée dans le descripteur de déploiement
de ce client.
Cette référence de ressource, configurée comme élément
du descripteur de déploiement de l'application cliente, fournit un lien
à un objet source de données préconfiguré.
Pourquoi et quand exécuter cette tâche
Notez que l'accès aux données
à partir d'un client d'application utilise directement la fonctionnalité de connexion
du pilote JDBC côté client. Il n'exploite pas le support de mise en pool des connexions
disponible dans le contexte d'exécution (runtime) du serveur d'applications. C'est pourquoi votre
application client doit utiliser, pour accéder aux données, un EJB s'exécutant
côté serveur. Cet EJB pourra tirer parti de la fonction de réutilisation des connexions
et des fonctionnalités supplémentaires fournies par le contexte d'exécution du produit.
Procédure
- Importez les packages de l'API JDBC et de l'interface de nommage :
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
- Créez le contexte de nommage initial :
InitialContext ctx = new InitialContext();
- Utilisez l'objet InitialContext pour rechercher un objet source de données à partir d'une référence de ressource.
javax.sql.DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myDS");
//où jdbc/myDS est le nom de la référence de ressource
- Obtenez un objet java.sql.Connection de la source de données.
- Si aucune combinaison ID utilisateur/mot de passe n'est requise pour la connexion, ou si
vous prévoyez d'utiliser l'ID utilisateur par défaut et le mot de passe par défaut que vous
spécifierez plus tard, lors de la création de la source de données dans l'outil de configuration
des ressources du client d'application (ACRCT), procédez comme suit :
java.sql.Connection conn = ds.getConnection();
- Sinon, vous devez configurer la connexion avec un ID utilisateur et un mot de passe
spécifiques :
java.sql.Connection conn = ds.getConnection("user", "password");
//où user et password sont l'ID utilisateur et le mot de passe de la connexion
- Exécutez une requête sur la base de données en utilisant, selon les circonstances, l'interface java.sql.Statement, java.sql.PreparedStatement ou java.sql.CallableStatement.
Statement stmt = conn.createStatement();
String query = "Select FirstNme from " + owner.toUpperCase() + ".Employee where LASTNAME = '" + searchName + "'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) { firstNameList.addElement(rs.getString(1));
}
- Fermez les objets de la base de données utilisés à l'étape précédente : ResultSet, Statement, PreparedStatement et/ou CallableStatement.
- Fermez la connexion. L'idéal est de fermer la connexion dans un bloc finally de l'instruction try...catch englobant l'opération sur la base de données. Vous êtes ainsi certain
que la connexion sera fermée, même si une exception est lancée.
conn.close();