J'ai ce programme Java: MySQLConnectExample.Java
import Java.sql.*;
import Java.util.Properties;
public class MySQLConnectExample {
public static void main(String[] args) {
Connection conn1 = null;
Connection conn2 = null;
Connection conn3 = null;
try {
String url1 = "jdbc:mysql://localhost:3306/aavikme";
String user = "root";
String password = "aa";
conn1 = DriverManager.getConnection(url1, user, password);
if (conn1 != null)
System.out.println("Connected to the database test1");
String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
conn2 = DriverManager.getConnection(url2);
if (conn2 != null) {
System.out.println("Connected to the database test2");
}
String url3 = "jdbc:mysql://localhost:3306/aavikme";
Properties info = new Properties();
info.put("user", "root");
info.put("password", "aa");
conn3 = DriverManager.getConnection(url3, info);
if (conn3 != null) {
System.out.println("Connected to the database test3");
}
} catch (SQLException ex) {
System.out.println("An error occurred. Maybe user/password is invalid");
ex.printStackTrace();
}
}
}
je le compile comme ceci:
E:\Java mysql code driver>javac MySQLConnectExample.Java
E:\Java mysql code driver>Java -cp mysql-connector-Java-3.0.11-stable-bin.jar;.
MySQLConnectExample
je reçois cette erreur:
An error occurred. Maybe user/password is invalid
Java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/
aavikme
at Java.sql.DriverManager.getConnection(DriverManager.Java:596)
at Java.sql.DriverManager.getConnection(DriverManager.Java:215)
at MySQLConnectExample.main(MySQLConnectExample.Java:20)
Qu'est-ce que je fais mal?
Assurez-vous de lancer ceci en premier:
Class.forName("com.mysql.jdbc.Driver");
Cela oblige le pilote à s’enregistrer lui-même, de sorte que Java sache comment gérer ces chaînes de connexion à la base de données.
Pour plus d'informations, reportez-vous à la section référence de MySQL Connector .
Vous devez charger jdbc driver
. Considérez ci-dessous Code.
try {
Class.forName("com.mysql.jdbc.Driver");
// connect way #1
String url1 = "jdbc:mysql://localhost:3306/aavikme";
String user = "root";
String password = "aa";
conn1 = DriverManager.getConnection(url1, user, password);
if (conn1 != null) {
System.out.println("Connected to the database test1");
}
// connect way #2
String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
conn2 = DriverManager.getConnection(url2);
if (conn2 != null) {
System.out.println("Connected to the database test2");
}
// connect way #3
String url3 = "jdbc:mysql://localhost:3306/aavikme";
Properties info = new Properties();
info.put("user", "root");
info.put("password", "aa");
conn3 = DriverManager.getConnection(url3, info);
if (conn3 != null) {
System.out.println("Connected to the database test3");
}
} catch (SQLException ex) {
System.out.println("An error occurred. Maybe user/password is invalid");
ex.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Un exemple d'extraction de données d'une table comportant les colonnes column1, column2, column3 column4, cloumn1 et 2 contient les valeurs int et les colonnes 3 et 4, varchar(10)
.
import Java.sql.*;
// need to import this as the STEP 1. Has the classes that you mentioned
public class JDBCexample {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://LocalHost:3306/databaseNameHere";
// DON'T PUT ANY SPACES IN BETWEEN and give the name of the database (case insensitive)
// database credentials
static final String USER = "root";
// usually when you install MySQL, it logs in as root
static final String PASS = "";
// and the default password is blank
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// registering the driver__STEP 2
Class.forName("com.mysql.jdbc.Driver");
// returns a Class object of com.mysql.jdbc.Driver
// (forName(""); initializes the class passed to it as String) i.e initializing the
// "suitable" driver
System.out.println("connecting to the database");
// opening a connection__STEP 3
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// executing a query__STEP 4
System.out.println("creating a statement..");
stmt = conn.createStatement();
// creating an object to create statements in SQL
String sql;
sql = "SELECT column1, cloumn2, column3, column4 from jdbcTest;";
// this is what you would have typed in CLI for MySQL
ResultSet rs = stmt.executeQuery(sql);
// executing the query__STEP 5 (and retrieving the results in an object of ResultSet)
// extracting data from result set
while(rs.next()){
// retrieve by column name
int value1 = rs.getInt("column1");
int value2 = rs.getInt("column2");
String value3 = rs.getString("column3");
String value4 = rs.getString("columnm4");
// displaying values:
System.out.println("column1 "+ value1);
System.out.println("column2 "+ value2);
System.out.println("column3 "+ value3);
System.out.println("column4 "+ value4);
}
// cleaning up__STEP 6
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// handle sql exception
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception for class.forName
e.printStackTrace();
}finally{
//closing the resources..STEP 7
try {
if (stmt != null)
stmt.close();
} catch (SQLException e2) {
e2.printStackTrace();
}try {
if (conn != null) {
conn.close();
}
} catch (SQLException e2) {
e2.printStackTrace();
}
}
System.out.println("good bye");
}
}
J'ai eu le même problème, mon code est ci-dessous:
private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();
Je n'ai pas chargé la classe de pilote, mais cela fonctionne localement, je peux interroger les résultats depuis MySQL. Toutefois, cela ne fonctionne pas lorsque je le déploie sur Tomcat et les erreurs ci-dessous se produisent:
No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud
alors j'ai chargé la classe driver, comme ci-dessous, quand j'ai vu d'autres réponses postées:
Class.forName("com.mysql.jdbc.Driver");
Ça fonctionne maintenant! Je ne sais pas pourquoi cela fonctionne bien localement, j'ai besoin de votre aide, merci beaucoup!
Vous n'avez peut-être pas copié le fichier jar MySQL connector/J
dans le dossier lib. Ce fichier doit ensuite figurer dans le chemin d'accès aux classes.
Si vous ne l'avez pas encore fait, s'il vous plaît laissez-moi savoir que je vais élaborer la réponse
Dans votre code, il vous manque Class.forName("com.mysql.jdbc.Driver");
C'est ce qui vous manque pour que tout fonctionne.
Toutes les réponses ici utilisent la ligne Class.forName("my.vandor.Driver");
pour charger le pilote.
En guise d'alternative (meilleure), vous pouvez utiliser la classe d'assistance DriverManager
qui fournit une poignée de méthodes pour gérer votre/vos pilote (s) JDBC.
Tu pourrais vouloir
DriverManager.registerDriver(driverObject);
pour enregistrer votre pilote dans sa liste de pilotes.Enregistre le pilote donné avec DriverManager. Une classe de pilote nouvellement chargée doit appeler la méthode registerDriver pour se faire connaître au DriverManager. Si le pilote est actuellement enregistré, aucune action n'est entreprise.
DriverManager.deregisterDriver(driverObject);
pour le supprimer.Supprime le pilote spécifié de la liste des pilotes enregistrés de DriverManager.
Exemple:
Driver driver = new Oracle.jdbc.OracleDriver();
DriverManager.registerDriver(driver);
Connection conn = DriverManager.getConnection(url, user, password);
// ...
// and when you don't need anything else from the driver
DriverManager.deregisterDriver(driver);
ou mieux encore, utilisez un DataSource