无法为连接URL'jdbc:mysql:// localhost:3306 / web13创建类''的JDBC驱动程序?useSSL = false&serverTimezone = UTC'

时间:2018-10-02 14:00:52

标签: java mysql jdbc

我创建了一个属性文件

url=jdbc:mysql://localhost:3306/web13?useSSL=false&serverTimezone=UTC
username=root
password=root

我创建了一个连接池

    private static DataSource dataSource; 
static {

    try {
        //load properties file
        InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
        //load input stream
        Properties props = new Properties();
        props.load(is);
        //create data source
        dataSource = BasicDataSourceFactory.createDataSource(props);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        throw new RuntimeException(e);
    }
}

然后我遇到了问题。我搜索了一些查询器,他们说驱动程序需要像Class.forName(com.mysql.jdbc.Driver)一样进行注册。但是我的驱动程序版本似乎可以自行注册,因此该解决方案无法正常工作。

错误

  

2018年10月2日上午9:46:09 org.apache.catalina.core.StandardContext   重新加载信息:名称为[/ WEB13]的重新加载上下文已完成

     

java.sql.SQLException:无法为创建类“”的JDBC驱动程序   连接网址   'jdbc:mysql:// localhost:3306 / web13?useSSL = false&serverTimezone = UTC'     在   org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2224)     在   org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2104)     在   org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563)     在   org.apache.commons.dbutils.AbstractQueryRunner.prepareConnection(AbstractQueryRunner.java:319)     在org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:327)     在com.itheima.login.LoginServlet.doGet(LoginServlet.java:36)处   javax.servlet.http.HttpServlet.service(HttpServlet.java:634)在   javax.servlet.http.HttpServlet.service(HttpServlet.java:741)在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)     在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     在   org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)     在   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)     在   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     在   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)     在   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)     在   org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)     在   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)     在   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)     在   org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)     在   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)     在   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)     在   org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)     在   org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)     在   org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:770)     在   org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1415)     在   org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)     在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)     在   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624)     在   org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)     在java.lang.Thread.run(Thread.java:748)造成原因:   java.sql.SQLException:在以下位置没有合适的驱动程序   java.sql.DriverManager.getDriver(DriverManager.java:315)在   org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2209)     ...还有29个

3 个答案:

答案 0 :(得分:0)

@Ziyan Zhu

您在db.properties中添加了错误的网址:

db属性中的

url类似于jdbc:mysql://localhost:3306/web13,其中web13是您的数据库名称。

此外,您的连接池中缺少某些方法,如here

所述
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtils {
    private static DataSource dataSource;
    static {
        try {
            // 1.Load the properties file input stream
            InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db.properties");
            // 2.Load the input stream
            Properties props = new Properties();
            props.load(is);
            // 3.create data source
            dataSource = BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

答案 1 :(得分:0)

您的属性文件缺少属性,这意味着DBCP无法创建/初始化驱动程序。

您需要添加

driverClassName = org.mysql.jdbc.Driver

答案 2 :(得分:-1)

我刚刚遇到了同样的问题,但我正在使用 glassfish。如果将来有人在尝试在 glassfish 服务器中建立数据库连接时遇到此问题,解决方案是将 java mysql connector 添加到 glassfish 服务器,那么您的问题就解决了。

转到.../glassfish-installation-folder/Glassfish[your-version]/glassfish/lib/here-paste-your-mysql-connector-driver.jar< /em>

这是我的荣幸。 :)