Une fois qu'une connexion est obtenue, nous pouvons interagir avec la base de données. Méthodes et propriétés définies dans l'instruction JDBC, les interfaces CallableStation et PreadStatement permettent l'envoi de commandes SQL ou PL / SQL et recevant des données de la base de données.
Ils définissent également des méthodes qui aident à convertir les différences de données entre Java et les bases de données à l'aide des types de données SQL.
Le tableau suivant donne un aperçu de la façon dont chaque interface est utilisée pour comprendre quelle interface utiliser
Objet de déclaration:
Créer un objet de déclaration
Lorsque vous pouvez utiliser l'objet Instruction pour exécuter des instructions SQL, vous devez utiliser la méthode CreateStatement () de l'objet de connexion pour en créer une, comme indiqué dans l'exemple suivant:
Instruction stmt = null; try {stmt = conn.createStatement (); . . .} Catch (Sqlexception e) {. . .} enfin { . . .}Une fois un objet d'instruction créé, il peut ensuite être utilisé pour exécuter des instructions SQL avec l'une de ses trois méthodes d'exécution.
Boolean Execute (String SQL): Renvoie la valeur booléenne True si l'objet de résultat peut être récupéré, sinon renvoie false. Utilisez cette méthode pour exécuter des instructions SQL DDL, ou lorsque vous utilisez un SQL dynamique réel.
int executeUpDate (String SQL): renvoie le nombre de lignes exécutées par l'instruction SQL affectée. Utilisez cette méthode pour exécuter et espérons obtenir certaines lignes affectées d'instructions SQL - par exemple, insérer, mettre à jour ou supprimer des instructions.
ResultSet executequery (String SQL): renvoie l'objet résultat. Utilisez cette méthode lorsque vous souhaitez obtenir un ensemble de résultats, tout comme l'utilisation d'une instruction SELECT.
Fermez l'objet de déclaration:
Tout comme la fermeture d'un objet de connexion pour maintenir une ressource de base de données, l'objet instruction doit être fermé pour la même raison.
Un simple appel à la méthode close () fera le travail. Si l'objet de connexion est fermé en premier, il fermera également l'objet instruction. Cependant, l'objet de déclaration doit toujours être explicitement fermé pour garantir un dégagement approprié.
Instruction stmt = null; try {stmt = conn.createStatement (); . . .} Catch (Sqlexception e) {. . .} Enfin {stmt.close ();}
Objet de mise en scène de préparation
L'interface PreadStatement étend l'interface d'instruction, permettant d'ajouter plusieurs fonctionnalités avancées à un objet d'instruction commun.
L'instruction offre une flexibilité pour les paramètres dynamiques.
Créer un objet PréparedStatement:
PréparéStatement pstmt = null; try {String sql = "Update les employés set agent =? Où id =?"; PSTMT = Conn.Preparestatement (SQL); . . .} Catch (Sqlexception e) {. . .} enfin { . . .}Tous les paramètres de JDBC sont représentés? Symbole, qui est un marqueur de paramètre connu. Avant d'exécuter l'instruction SQL, chaque paramètre de la valeur doit être fourni.
La méthode setxxx () lie la valeur à un paramètre, où xxx représente le type de données Java que vous souhaitez lier à la valeur du paramètre d'entrée. Si vous oubliez de fournir la valeur, vous recevrez une SQLEXception.
Chaque balise de paramètre est référencée par sa position de numéro de séquence. La première marque indique la position 1, la position suivante est 2, et ainsi de suite. Cette méthode est différente de l'indexation du tableau Java, à commencer par 0.
Toutes les méthodes d'objets d'instructions pour interagir avec la base de données (a) EXECUTE (), (b) executeQuery (), et (c) executeUpdate () fonctionnent également avec des objets PréparedStatement. Cependant, la méthode est modifiée pour utiliser des instructions SQL, qui peuvent utiliser les paramètres d'entrée.
Fermez l'objet PréparedStatement:
Tout comme la fermeture d'un objet de déclaration, pour la même raison, l'objet PréparedStatement doit également être fermé.
Un simple appel à la méthode close () fera le travail. Si l'objet de connexion est fermé, il fermera d'abord l'objet PréparedStatement. Cependant, l'objet PréparedStatement doit toujours être explicitement fermé pour garantir un dégagement correct.
PréparéStatement pstmt = null; try {String sql = "Update les employés set agent =? Où id =?"; PSTMT = Conn.Preparestatement (SQL); . . .} Catch (Sqlexception e) {. . .} Enfin {pstmt.close ();} Instance de mise en scène
Voici des exemples de cette utilisation de la mise en scène de préparation et de l'activation des instructions:
Copiez l'exemple suivant jdbcexample.java, compilez et exécutez comme indiqué ci-dessous:
// Étape 1. Importez les packages requis Import Java.sql. *; Classe publique JDBCExample {// JDBC Nom du pilote et URL de la base de données State Final String jdbc_driver = "com.mysql.jdbc.driver"; chaîne finale statique db_url = "jdbc: mysql: // localhost / emp"; // les informations d'identification de la base de données static final string user = "username"; String statique final pass = "mot de passe"; public static void main (String [] args) {connexion conn = null; PRÉPAYÉSATSATION STMT = NULL; essayez {// étape 2: registre jdbc driver class.forname ("com.mysql.jdbc.driver"); // Étape 3: Ouvrez un système de connexion.out.println ("Connexion à la base de données ..."); Conn = driverManager.getConnection (db_url, utilisateur, pass); // Étape 4: Exécuter un système de requête.out.println ("Création de déclaration ..."); String sql = "Mise à jour les employés set agent =? Où id =?"; STMT = Conn.Preparestatement (SQL); // lier les valeurs dans les paramètres. stmt.sentInt (1, 35); // cela définirait l'âge stmt.sentInt (2, 102); // Cela définirait id // mettrait à jour l'âge de l'enregistrement avec id = 102; int rows = stmt.executeupdate (); System.out.println ("lignes impactées:" + lignes); // Sélectionnez tous les enregistrements et affichons-les. SQL = "SELECT ID, d'abord, dernier, âge des employés"; ResultSet rs = stmt.ExecuteQuery (SQL); // Étape 5: Extraire les données de Set Set While (Rs.Next ()) {// Récupérer par nom de colonne int id = Rs.GetInt ("id"); int age = Rs.getInt ("âge"); String First = Rs.GetString ("First"); String Last = Rs.GetString ("Last"); // affiche les valeurs System.out.print ("id:" + id); System.out.print (", âge:" + âge); System.out.print (", premier:" + premier); System.out.println (", dernier:" + dernier); } // Étape 6: Environnement de nettoyage Rs.Close (); stmt.close (); conn.close (); } catch (sqlexception se) {// gérer les erreurs pour jdbc se.printStackTrace (); } catch (exception e) {// Gire les erreurs pour class.forname e.printStackTrace (); } Enfin {// Enfin Block utilisé pour fermer les ressources essayez {if (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // Rien que nous ne pouvons essayer {if (conn! = null) Conn.close (); } catch (sqlexception se) {se.printStackTrace (); } // fin enfin essayez} // fin essayez System.out.println ("Goodbye!"); } // fin main} // fin jdbcexampleCompilons maintenant l'exemple ci-dessus comme suit:
C:> javac jdbcexample.java
Lors de l'exécution de Jdbcexample, il produit les résultats suivants:
C:> java jdbcexample
Connexion à la base de données ... Création de déclarations ... lignes impactées: 1ID: 100, âge: 18, premier: Zara, dernier: Aliid: 101, âge: 25, premier: Mahnaz, Last: Fatmaid: 102, âge: 35, premier: Zaid, dernier: Khanid: 103, âge: 30, premier: Sumit, dernier: Mittalgoodye!