我有这个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)
我做错了什么?
答案 0 :(得分:66)
请务必先运行此功能:
Class.forName("com.mysql.jdbc.Driver");
这会强制驱动程序自行注册,以便Java知道如何处理这些数据库连接字符串。
有关详细信息,请参阅MySQL Connector reference。
答案 1 :(得分:10)
您必须加载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();
}
答案 2 :(得分:5)
从具有列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");
}
}
答案 3 :(得分:4)
您可能没有将MySQL connector/J
jar文件复制到lib文件夹中,然后此文件必须存在于类路径中。
如果您还没有这样做,请告诉我,我将详细说明答案
答案 4 :(得分:4)
我遇到了同样的问题,我的代码如下:
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");
现在有效!我不知道为什么它在当地运作良好,我需要你的帮助,非常感谢你!
答案 5 :(得分:2)
在您的代码中,您缺少%.2f
这是让一切正常运作所缺少的。
答案 6 :(得分:1)
此处的所有答案都使用Class.forName("my.vandor.Driver");
行来加载驱动程序。
作为(更好的)替代方案,您可以使用DriverManager
帮助程序类,它为您提供了一些处理JDBC驱动程序的方法。
你可能想要
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
答案 7 :(得分:-1)
试试这个
String url = "jdbc:mysql://localhost:3306/<dbname>";
String user = "<username>";
String password = "<password>";
conn = DriverManager.getConnection(url, user, password);
答案 8 :(得分:-2)
我遇到了类似的问题,只需验证运行Mysql服务器的端口,即可解决问题
例如,我的代码是:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/bddventas","root","");
我将字符串更改为
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bddventas","root","");
并且瞧!!,这是因为我的服务器在该端口上运行
希望这个帮助