La Java Database Connectivity ( JDBC ou ) API est un ensemble de classes standard conçus pour fournir une interface unifiée pour le raccordement de toutes les principales solutions de bases de données . Bases de données prises en charge pour le pilote JDBC MySQL, Oracle , PostgreSQL, DB2 et Microsoft SQL Server . Cet article va utiliser le logiciel de base de données open source , MySQL, pour illustrer les principes JDBC. Télécharger et un lien vers le pilote JDBC MySQL
JDBC nécessite un pilote pour chaque type de base de données , il se connecte à , et la production et la maintenance de ce pilote est de la responsabilité des développeurs du logiciel de base de données . Dans le cas de MySQL, le pilote officiel JDBC est appelé MySQL :: Connector /J , et peut être obtenu gratuitement sur le site web de MySQL. Le pilote sera un fichier JAR , ce fichier doit être dans le chemin de classe Java. La plupart des IDE Java de gérera automatiquement pour vous si vous ajoutez le fichier du pilote comme une bibliothèque externe.
Toutes les commandes nécessaires pour interagir avec le JDBC devraient être disponibles par l'importation java.sql . * En haut de votre classe fichier .
enregistrer le pilote
Cela ne nécessite pas d'envoyer un formulaire d'inscription à Sun. C'est à dire Java quelle base de données pilote que vous allez utiliser avec le pilote JDBC pour les requêtes suivantes . Vous enregistrez le pilote avec la commande suivante:
pilote d = ( Driver) Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ();
Le contenu de l' . le nom du conducteur ( com.mysql.jdbc.Driver ) ne s'applique qu'aux MySQL. La chaîne précise nécessaire pour les autres pilotes de base de données (comme PostgreSQL ) sera différent.
Si vous recevez un java.lang.ClassNotFoundException , cela signifie très probablement que le pilote n'est pas sur le chemin de classe .
Le établir une connexion
connexions sont établies avec la commande suivante:
Connection conn = DriverManager.getConnection (url, nom d'utilisateur , mot de passe ) ; < br >
Si la base est sur la même machine que le client Java y accéder, alors "localhost" fonctionne comme une adresse dans la plupart des cas . Si le numéro de port de la base de données n'est pas la valeur par défaut pour ce package de base de données , il peut être ajouté à l'URL en utilisant un colon.
Un ajout important est l'identificateur d' URL. Cela va changer pour les différents serveurs de base de données . Cependant, pour MySQL, ce qui suit serait valable : String url = " jdbc: mysql ://localhost : 8080" ;
Si une connexion échoue pour une raison quelconque, une SQLException sera levée , et il contiendra un message d'erreur avec plus d'informations que vous pouvez imprimer à System.err pour le débogage.
Délais de bases de données
Il est important de se rappeler que , comme la création de la connexion , une connexion active existe entre le client et le serveur . Cependant, de nombreuses bases de données ont des exigences de délai d'attente très serrés. Il est important que la connexion ne peut être établie que les requêtes sont prêts. Plutôt que d' établir une connexion , puis attendre une entrée de l'utilisateur pour savoir ce que l'exécution des requêtes , il est préférable d' établir une connexion de test, débrancher puis rebrancher une fois les requêtes sont disponibles.
Exécuter la requête et récupérer les résultats
Pour émettre une requête, vous devez créer un compte en utilisant une connexion active = l' d' conn.createStatement de la base de données
déclaration (); . s.executeQuery ("SELECT * FROM " + tableName ) ;
Pour obtenir des résultats , vous pouvez exécuter immédiatement :
ResultSet rs = s.getResultSet ();
ResultSets
< br >
une chose importante à savoir sur ResultSets est qu'ils tirent des données du serveur une ligne à la fois . La commande ci-dessus uniquement initialise un objet ResultSet et obtient des métadonnées à propos de cet objet (noms plus important colonnes et les types ) . Il ne fait pas de récupérer toutes les données . Les données doivent être retirées d'un ResultSet et stockées dans un autre endroit avant que la connexion est fermée, généralement avec une boucle en regardant quelque chose comme:
données LinkedList
= new LinkedList (); while ( rs.next ()) { data.add ( rs.getString (1) ) ; //récupérer toutes les données de la première colonne }
liens étroits
la plupart du temps , le chauffeur gérer les connexions de clôture elle-même . Cependant, il peut aider à prévenir des problèmes plus tard si vous toujours fermer explicitement votre ResultSet , Statement et Connexions lorsque vous avez terminé avec eux
rs.close (); . S.close (); conn.close (); Photos