次の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();
}
}
}
私はこのようにコンパイルします:
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
このエラーが発生します:
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)
私は何を間違えていますか?
最初にこれを実行してください:
Class.forName("com.mysql.jdbc.Driver");
これにより、ドライバーはそれ自体を強制的に登録するため、Javaはこれらのデータベース接続文字列の処理方法を認識します。
詳細については、 MySQLコネクタリファレンス を参照してください。
jdbc driver
をロードする必要があります。以下のコードを検討してください。
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();
}
列column1、column2、column3 column4、cloumn1および2がint値を保持し、列3および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");
}
}
私は同じ問題を抱えていました、私のコードは次のとおりです:
private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();
ドライバークラスをロードしていませんが、ローカルで機能し、MySQLから結果を照会できますが、Tomcatにデプロイすると機能せず、以下のエラーが発生します。
No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud
そこで、他の回答が投稿されたのを見て、以下のようにドライバークラスをロードしました。
Class.forName("com.mysql.jdbc.Driver");
今すぐ動作します!ローカルでうまく機能する理由がわかりません。あなたの助けが必要です。ありがとうございました!
MySQL connector/J
jarファイルをlibフォルダーにコピーしておらず、このファイルがクラスパスに存在している必要があります。
あなたがそうしていない場合は、私は答えを詳しく説明することを教えてください
コードにClass.forName("com.mysql.jdbc.Driver");
がありません
これは、すべてが機能するために不足しているものです。
ここでのすべての答えは、Class.forName("my.vandor.Driver");
行を使用してドライバーをロードします。
(より良い)代替手段として、JDBCドライバーを処理するいくつかのメソッドを提供するDriverManager
ヘルパークラスを使用できます。
あなたはしたいかもしれない
DriverManager.registerDriver(driverObject);
を使用して、ドライバーをドライバーのリストに登録します指定されたドライバーをDriverManagerに登録します。新しくロードされたドライバークラスは、registerDriverメソッドを呼び出して、DriverManagerに認識されるようにする必要があります。ドライバーが現在登録されている場合、アクションは実行されません
DriverManager.deregisterDriver(driverObject);
を使用して削除します。DriverManagerの登録済みドライバーのリストから指定されたドライバーを削除します。
例:
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);
それ以上の場合、 DataSource を使用します