您好我发现了一个看似常见的问题,我无法与mysql数据库进行交互。找不到合适的驱动程序。 我在同一个问题上跟踪了大多数主题,但是我无法复制他们的解决方案,因此我发布了自己的具体问题。
(主要是这个主题:I can't load the JDBC driver for MySQL)
我的代码:
public DBManager(){
try {
//Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
con=DriverManager.getConnection("jdbc:mysql:3306//localhost/test","root","root");
//con=DriverManager.getConnection(c);
if(!con.isClosed()) {
con.close();
}
}
catch (SQLException e) {
e.printStackTrace();
}
现在,我读到了较新的驱动程序,你不需要Class.forName()或registerDriver(); 我已经试过了两次,但仍然无法让它发挥作用。
事情是在Windows机器上开发,使用eclipse Indigo和Connector / J 5.1.17
并在具有相同连接器的远程linux上部署(和调试)。
使用
启动调试会话java -Xdebug -Xrunjdwp:transport = dt_socket,address = 8998,server = y -classpath /home/dev/mysql-connector-java-5.1.17-bin.jar -jar devserver.jar
我得到了那个例外。有什么帮助吗?
我来自一个沉重的c#开发环境,所以如果我必须干涉类路径,那么请尝试逐步进行,因为我不太熟悉它。
答案 0 :(得分:5)
SQLException:没有合适的驱动程序
只要DriverManager#getConnection()
无法为给定的连接URL找到合适的驱动程序,您就会收到此异常。当Driver#acceptsURL()
已为任何已加载的驱动程序返回false
时,就会发生这种情况。
事实上,您的连接网址错误:
jdbc:mysql:3306//localhost/test
应该是:
jdbc:mysql://localhost:3306/test
另请参阅MySQL JDBC manual。
MySQL Connector / J的JDBC URL格式如下,方括号([,])中的项是可选的:
jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
如果未指定主机名,则默认为127.0.0.1。如果未指定端口,则默认为3306,即MySQL服务器的默认端口号。
jdbc:mysql://[host:port],[host:port].../[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
如果未指定数据库,则将建立连接而不使用默认数据库。