Dans la plupart des applications que nous allons trouver, une base de données apparaîtra comme source d’informations.JDBC nous permettra d’accéder à des bases de données (BD) de Java. CONJDBC Il n’est pas nécessaire d’écrire différents programmes pour différents BD, mais un seul programme sert à accéder à BD de distinct. Même, nous pouvons accéder à plus d’un BD de distinctions (Oracle, accès, MySQL, etc.) dans la même application. Nous pouvons penser à JDBC comme pont entre une base de données et notre programme Java. Un exemple simple peut être une applet qui échantillonnée des informations contenues dans une base de données. L’applet utilisera JDBC pour obtenir de telles données.
Le schéma à suivre dans un programme utilisant JDBC est la suivante:
Un programme Java qui utilise JDBC, vous devez d’abord établir une connexion avec le SGBD. Pour faire une telle connexion, nous utiliserons un pilote spécifique pour chaque SGBD à mesure que nous établissons. Une fois la connexion établie et que nous pouvons notter la BD avec une commande SQL (SELECT, Mettre à jour, Créer, etc.). Le résultat d’une commande SELECT est un objet Result Laclase, qui contient les données qui renvoient la requête. Nous avons des méthodes de prothest pour gérer les dames retournées. Nous pouvons également effectuer tous les moyens dans SQL (création de tables, de gestion déseusé, etc.).
pour effectuer ces Opérations Nous devrons avoir un SGBD (système de gestion de la base de données) ainsi qu’un lecteur de facilité de conducteur pour pouvoir accéder à ce SGBD. Nous allons utiliser SGBD: MySQL (disponible pour Windows et Linux, LibreDistribution) et Postgres (uniquement pour Linux, distribution gratuite).
Pilotes d’accès
Pilotes pour pouvoir accéder à Chaque SGBD ne fait pas partie de la reconnaissance de la distribution de Java, nous devons donc les obtenir suscitées. Pourquoi utiliser un pilote ?. Un problème électoral qui peut être considéré est que chaque SGBD a sa propre API (la majorité du propriétaire), donc une augmentation de la SGBD implique une modification de notre code. Sicolocammos Une couche intermédiaire, nous pouvons abstraction de connectivité, de Talform que nous utilisons un objet pour la connexion et ElDiver est responsable de la traduction de l’appel à l’API. Le conducteur sympathisera les entreprises elles-mêmes qui fabriquent la SGBD.
Types de pilotes
Il existe une norme établie qui divise les pilotes à quatre mains:
- type 1: pont JDBC-ODBC. ODBC (connectivité Open Base de données) a été créée pour fournir une connexion aux bases de données dans Microsoft Windows. ODBC permet d’accéder aux bases de données de différentes langages de programmation, tels que C et COBOL. Le pont JDBC-ODBC vous permet de relier Java avec n’importe quelle base de données disponible en ODBC. L’utilisation de ce type de pilote n’est pas conseillée lorsque nous devons accéder à des bases de données haute performance, car les fonctionnalités sont limitées à celles de la marque ODBC. Chaque client doit avoir le pilote installé. J2SE inclut ce pilote dans sa version Windows et Solaris.
- Type 2: Partie Java, pilote de pièce natale. Il s’agit d’une combinaison de la mise en œuvre de Java et de l’API native pour avoir accès à la base de données. Ce type de pilote est plus rapide que le précédent, car l’étape n’est pas effectuée par la couche ODBC. Les appels JDBC sont traduits en appels spécifiques de l’API de la base de données. Chaque client doit avoir le pilote installé. Il a moins de performances que les deux suivantes et ne peuvent pas être utilisés sur Internet, car vous avez besoin de l’API localement.
- type 3: Accès à la base de données Intermédiaire Server.Cet type de périphérique de conducteur Une abstraction de la connexion. Le client Senescute au SGBD par un composant serveur intermédiaire, qui agit comme un non-porteur pour plusieurs serveurs. L’avantage de ce type de dédriver est le niveau d’abstraction. Le serveur d’applications Weblogic intègre ce type de pilote.
- Type 4: Pilotes Java. C’est le plus direct. Llallamada JDBC est traduit dans un appel réseau à la base de données, Syninterriaries. Fournir des performances égales. La plupart des SGBD fournissent des pilotes de type humide.
Installation des pilotes
La distribution JDBC incorpore la Pilotes pour le pont JDBC-ODBC qui nous permet d’accéder à tout BD géré avec ODBC. Pour MySQL, nous devons télécharger et installer le SGBD et le pilote, qui peut être obtenu à l’adresse http://dev.mysql.com/doc/mysql/en/Java_Connector.html.Le pilote postgre est obtenu dans http://jdbc.postgresql.org
Pour installer le pilote, la seule chose que nous devrions faire pour annuler le fichier JAR qui le contient dans la classe de classe. Par exemple, pour mysql:
export CLASSPATH=$CLASSPATH: /directorio-donde-este/mysql-connector-java-3.0.15-ga-bin.jar
avec le pilote installé, nous pouvons le télécharger de notre application simplement en chargeant de manière dynamique la classe au pilote:
Class.forName("com.mysql.jdbc.Driver");
Le pilote JDBC-ODBC est chargé comme indiqué ci-dessous:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
et similaire pour Postgres :
Class.forName("org.postgresql.Driver");
La charge du conducteur doit toujours être effectuée avant de décontrer avec le BD.
Comme nous l’avons vu précédemment, il peut y avoir différents types de dériveurs pour la même base de données. Par exemple, une BD sur MySqlPow d’accéder à ODBC ou à travers son propre conducteur. Nous pourrions penser que la solution la plus simple à utiliser ODBC pour toutes les connexions à SGBD. Cependant, en fonction de la complexité de l’application adsarrol, cela pourrait nous donner des problèmes. Des opérations SGBDpermite déterminées (transactions, amélioration des performances, inscrience, etc.) réduites en effectuant sa connexion via le pilote ODBC. C’est pourquoi il est préférable d’utiliser Dedriver spécifique à la SGBD en question.
L’exemple plus léger des problèmes liés à l’utilisation des pilotes est avec les applets. Lorsque nous utilisons l’accès à des bases de données viajdbc à partir d’une applet, nous devons garder à l’esprit que l’appletse exécute sur la machine cliente, de sorte que si le BD est hébergé sur notre serveur, vous devrez établir une connexion distante. Ici, nous trouvons le problème de Quesi L’applet est visible à partir d’Internet, il est très possible que Elpurto dans lequel vous écoutez le serveur de base de données puisse être coupé par un pare-feu, l’accès de l’extérieur ne serait donc pas possible.
L’utilisation du pont JDBC-ODBC n’est également pas recommandée dans les applets, car elle nécessite que chaque client ait la source de données appropriée configurée sur sa machine. Cela peut le contrôler dans le casode un intranet, mais dans le cas d’Internet, il sera préférable d’utiliser d’autres méthodes pour la connexion.
Concernant les exceptions, nous devons capturer l’exception SQLExceptionNeen presque toutes les opérations Dans lequel il est vu impliqué, objet JDBC.
Connexion au BD
Une fois que le pilote approprié est chargé pour notre SGBD, nous devons établir la connexion avec le BD. Pour cela, nous utiliserons la méthode suivante:
Connection con = DriverManager.getConnection(url);Connection con = DriverManager.getConnection(url, login, password);
La connexion au BD est encapsulée dans un objet de connexion. Pour sa création, nous devons fournir l’URL de BDY, Si le BD est protégé par mot de passe, le mot de passe de connexion pour y accéder. Le format de l’urlvarary en fonction du pilote que nous utilisons. Cependant, toutes les URL auront la voie générale suivante: JDBC: < Subprotocol >: < Nom >, avec SubProtocol indiquant le type de SGBD et avec nom nommé de la BD et fournissant des informations supplémentaires pour la connexion.
Pour se connecter à une source ODBC Nom BD, par exemple, nous utiliserons l’URL suivante:
Connection con = DriverManager.getConnection("jdbc:odbc:bd");
dans le cas de MySQL, si nous voulons vous connecter à un BD nommé Bdalo sur la machine locale (localhost) et avec le mot de passe MIGorial utilisateur M ++ 24, nous allons de la manière suivante:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bd", "miguel", "m++24");
Dans le cas des Postgres (Notez que nous avons indiqué un port de déconnexion, le 5432):
Connection con = DriverManager.getConnection( "jdbc:postgresql://localhost:5432/bd", "miguel", "m++24");
Nous pouvons déboguer la connexion et déterminer ce qu’on appelle jdbc. Pour cela, nous utiliserons quelques déméodos qui intègrent le drivermanager. Dans ce qui suit, il est indiqué que les opérations exécutées JDBC Semosera seront indiquées par la sortie standard:
DriverManager.setLogWriter(new PrintWriter(System.out, true));
une fois que cet appel peut également être affiché en utilisant :
DriverManager.println("Esto es un mensaje");