当尝试连接到mysql时,我总是收到此错误:
java.sql.SQLException:找不到适合localhost测试的驱动程序
我已在我的应用中的mysql-connector.jar
中添加了/WEB-INF/lib
。我需要配置什么才能使其工作?我是否需要在web.xml
中添加内容?我没有使用引擎。
这是我在服务器中的代码:
package com.mysql.server;
import java.sql.Connection;
import java.sql.DriverManager;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.mysql.client.ConnDb;
public class ConnDbImpl extends RemoteServiceServlet implements ConnDb {
public Connection con;
@Override
public String tryConn() {
try{
String host = "localhost";
String db = "test";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "pwd";
Class.forName(driver).newInstance();
con = DriverManager.getConnection(host+db, user, pass);
return "Connected to Database";
} catch(Exception ex) {
return ex.toString();
}
}
}
答案 0 :(得分:23)
根据Driver#acceptsURL()
方法,任何加载的JDBC驱动程序都不接受JDBC URL时,您将收到此异常。您实际上忘记了JDBC驱动程序特定的URI前缀。对于MySQL JDBC驱动程序,这是jdbc:mysql://
。完整的连接URL应如下所示:
con = DriverManager.getConnection("jdbc:mysql://localhost/test", user, pass);
答案 1 :(得分:6)
我发现此错误消息的另一个原因。在我的情况下,用户根本没有对数据库的特权,例如到选定的表格。亲爱的驱动程序开发人员,为什么要使用这些误导性的错误消息?很多人都有这个真正的麻烦。
答案 2 :(得分:0)
对我来说,它忘了在项目库中包含MySQLJDBC驱动程序。 DOH!
答案 3 :(得分:0)
这就是错误:
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/lib_db","root","root");
但当我改为:
Connection connection =DriverManager.getConnection("jdbc:mysql://localhost/db_name?"+"user=root&password=root");
错误消失了