Quelqu'un peut-il m'expliquer comment connecter Java à MySQL ?
Comment se fait-il que les autres exemples utilisent com.mysql.jdbc.Driver
? cette méthode est-elle meilleure ?
Quelqu'un peut-il m'expliquer comment connecter Java à MySQL ?
Voici une explication étape par étape de l'installation de MySQL et de JDBC et de leur utilisation :
Télécharger et installer le serveur MySQL . Il suffit de procéder de la manière habituelle. Souvenez-vous du numéro de port lorsque vous l'avez modifié. Il est par défaut 3306
.
Télécharger le pilote JDBC et mettre dans classpath extraire le fichier ZIP et placer le fichier JAR qu'il contient dans le classpath. Le pilote JDBC spécifique au fournisseur est une implémentation concrète de l'élément API JDBC ( tutoriel ici ).
Si vous utilisez un IDE comme Eclipse ou Netbeans, vous pouvez l'ajouter au classpath en ajoutant le fichier JAR en tant que Bibliothèque à la Chemin de construction dans les propriétés du projet.
Si vous effectuez cette opération dans la console de commande, vous devez indiquer le chemin d'accès au fichier JAR dans le champ -cp
ou -classpath
lors de l'exécution de votre application Java.
java -cp .;/path/to/mysql-connector.jar com.example.YourClass
Le site .
est juste là pour ajouter le actuel dans le classpath afin qu'il puisse localiser com.example.YourClass
et le ;
est le séparateur de classpath comme sous Windows. Sous Unix et ses clones :
doit être utilisé.
Créer un base de données dans MySQL . Créons une base de données javabase
.
CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Créer un utilisateur pour Java et subvention l'accès . Tout simplement parce que l'utilisation root
est une mauvaise pratique.
CREATE USER 'java'@'localhost' IDENTIFIED BY 'd$7hF_r!9Y';
GRANT ALL ON javabase.* TO 'java'@'localhost' IDENTIFIED BY 'd$7hF_r!9Y';
Oui, java
est le nom d'utilisateur et d$7hF_r!9Y
est le mot de passe ici.
Déterminer l'URL JDBC . Pour connecter la base de données MySQL en utilisant Java, vous avez besoin d'une URL JDBC dans la syntaxe suivante :
jdbc:mysql://hostname:port/databasename
hostname
: Le nom d'hôte où le serveur MySQL est installé. S'il est installé sur la même machine que celle où vous exécutez le code Java, vous pouvez simplement utiliser localhost
. Il peut également s'agir d'une adresse IP comme 127.0.0.1
. Si vous rencontrez des problèmes de connectivité et que vous utilisez 127.0.0.1
au lieu de localhost
Vous avez résolu le problème, alors vous avez un problème dans votre configuration réseau/DNS/hosts.
port
: Le port TCP/IP sur lequel le serveur MySQL écoute. Il s'agit par défaut de 3306
.
databasename
: Le nom de la base de données à laquelle vous souhaitez vous connecter. C'est javabase
.
L'URL final devrait donc ressembler à ceci :
jdbc:mysql://localhost:3306/javabase
Testez la connexion à MySQL en utilisant Java . Créez une classe Java simple avec un main()
pour tester la connexion.
I. Tout d'abord, nous devons charger le pilote JDBC :
try {
System.out.println("Loading driver...");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded!");
} catch (ClassNotFoundException e) {
throw new RuntimeException("Cannot find the driver in the classpath!", e);
}
Notez que le newInstance()
L'appel est pas nécessaire ici. C'est juste pour réparer l'ancien et buggy org.gjt.mm.mysql.Driver
. Explication ici . Si cette ligne jette ClassNotFoundException
alors le fichier JAR contenant la classe du pilote JDBC n'a tout simplement pas été placé dans le classpath.
Notez que vous n'avez pas besoin de charger le pilote. chaque fois avant connexion. Une seule fois lors du démarrage de l'application est suffisante.
II. Alors on peut avoir une connexion :
String url = "jdbc:mysql://localhost:3306/javabase";
String username = "java";
String password = "d$7hF_r!9Y"
Connection connection = null;
try {
System.out.println("Connecting database...");
connection = DriverManager.getConnection(url, username, password);
System.out.println("Database connected!");
} catch (SQLException e) {
throw new RuntimeException("Cannot connect the database!", e);
} finally {
System.out.println("Closing the connection.");
if (connection != null) try { connection.close(); } catch (SQLException ignore) {}
}
Si vous obtenez un SQLException: No suitable driver
alors cela signifie que le pilote JDBC n'a pas été chargé du tout ou que l'URL JDBC est erronée (c'est-à-dire qu'elle n'a été reconnue par aucun des pilotes chargés).
Si vous obtenez un SQLException: Connection refused
ou Connection timed out
ou une version spécifique de MySQL CommunicationsException: Communications link failure
alors cela signifie que le BD n'est pas accessible du tout. Cela peut avoir une ou plusieurs des causes suivantes :
Pour résoudre l'un ou l'autre, suivez les conseils suivants :
ping
.my.cnf
de la base de données MySQL.--skip-networking option
.finally
.Notez que la fermeture de la Connection
est extrêmement important. Si vous ne fermez pas les connexions et que vous en recevez beaucoup en peu de temps, la base de données risque de manquer de connexions et votre application peut s'arrêter. Il faut toujours acquérir et fermer la Connection
dans le cadre le plus court possible dans un try-catch-finally
bloc. Fermeture finally
est juste pour s'assurer qu'il est fermé aussi en cas d'exception. Ceci s'applique également à Statement
, PreparedStatement
et ResultSet
.
C'est tout ce qu'il y a à dire sur la connectivité. Vous pouvez trouver ici un tutoriel plus avancé sur la façon de charger et de stocker des objets modèles Java complets dans une base de données à l'aide d'une classe DAO de base.
DriverManager
est une façon assez ancienne de faire les choses. La meilleure façon est d'obtenir un DataSource
soit en en recherchant un que votre conteneur de serveur d'applications a déjà configuré pour vous :
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");
ou l'instanciation et la configuration d'un pilote de base de données directement :
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setServerName("myDBHost.example.org");
et ensuite obtenir des connexions à partir de celui-ci, comme ci-dessus :
Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS");
...
rs.close();
stmt.close();
conn.close();
Comment se fait-il que les autres exemples utilisent com.mysql.jdbc.Driver
? cette méthode est-elle meilleure ?
Je pense qu'il s'agit de l'ancienne classe Driver qui fonctionne avec l'ancien mécanisme du driver. MysqlDataSource
met en œuvre javax.sql.DataSource
qui est le mécanisme le plus récent.
@SeanOwen +1 pour la bonne explication. Je n'étais pas au courant de cette méthode, car la plupart des gens parlent de DriverManager.
Non. Ce n'est pas le cas. Et depuis Java 6, toute cette approche est dépassée. Et le nom de la classe du pilote a changé et ....
Voici le minimum dont vous avez besoin pour extraire des données d'une base MySQL :
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection
("jdbc:mysql://localhost:3306/foo", "root", "password");
Statement stmt = conn.createStatement();
stmt.execute("SELECT * FROM `FOO.BAR`");
stmt.close();
conn.close();
Ajoutez la gestion des exceptions, la configuration, etc. selon vos goûts.
Vous pouvez voir toutes les étapes pour connecter une base de données MySQL à partir d'une application JAVA. ici . Pour les autres bases de données, il suffit de changer le pilote dans la première étape seulement. Veuillez vous assurer que vous fournissez le bon chemin d'accès à la base de données ainsi que le nom d'utilisateur et le mot de passe corrects.
Visitez http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Voici un court tutoriel vidéo de 3 minutes qui montre comment utiliser MySQL depuis Java. Consultez-le ici : Tutoriel rapide : Connexion à la base de données MySQL à l'aide de Java