【问题标题】:Java Spring Error: Could not get JDBC ConnectionJava Spring 错误:无法获取 JDBC 连接
【发布时间】:2014-12-26 04:07:02
【问题描述】:

我正在使用 Spring 框架和 JDBC 做一个小练习,我得到了以下错误:

    Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: No suitable driver found for jdbc:mysql:3306//localhost/springcore
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:573)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:876)
    at springcore.springcore.EmployeeJDBCTemplate.create(EmployeeJDBCTemplate.java:23)
    at springcore.springcore.EmployeeApp.main(EmployeeApp.java:23)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql:3306//localhost/springcore
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

我的 pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>springcore</groupId>
  <artifactId>springcore</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>springcore</name>
  <url>http://maven.apache.org</url>

      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>

      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.0.RELEASE</version>
        </dependency>
        <!-- MySQL database driver -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>
      </dependencies>
    </project>

和 Beans.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">

   <!-- Initialization for data source -->
   <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
      <property name="url" value="jdbc:mysql:3306//localhost/springcore"/>
      <property name="username" value="root"/>
      <property name="password" value=""/>
   </bean>
<!-- Definition for employeeJDBCTemplate bean -->
   <bean id="employeeJDBCTemplate" 
      class="springcore.springcore.EmployeeJDBCTemplate">
      <property name="dataSource"  ref="dataSource" />    
   </bean>
</beans>

数据库:MySQL,我使用Xampp和phpmyadmin来管理数据库! IDE:esclipse,Maven 项目!

我是否缺少库或其他东西?

请告诉我我哪里错了! :D 提前致谢!

【问题讨论】:

  • 从堆栈跟踪中看起来很明显是一个驱动程序问题。请确保您的连接 url 正确,并且您的驱动程序已安装在本地 m2 存储库中

标签: java mysql spring spring-jdbc


【解决方案1】:

你确定连接字符串正确吗?

默认网址

jdbc:mysql://localhost:3306/dbname

【讨论】:

    【解决方案2】:

    清理并构建您的项目..

    Tomcat 服务器终端并重启。

    正确输入您的网址。

     JDBC_DRIVER = "com.mysql.jdbc.Driver";  
     DB_URL = "jdbc:mysql://localhost/EMP";
    
     conn = DriverManager.getConnection(DB_URL,USER,PASS);

    【讨论】:

      【解决方案3】:

      当我输入“localhost”时,它不知何故不起作用,但是:

      jdbc:mysql://127.0.0.1:3306/dbname
      

      似乎对我有用....

      【讨论】:

        【解决方案4】:

        请参考下面的文章为mysql构造JDBC URL以不同方式框架。

        驱动类:mysql数据库的驱动类是com.mysql.jdbc.Driver。 连接URL:mysql数据库的连接URL是jdbc:mysql://localhost:7101/empDB

        Class.forName("com.mysql.jdbc.Driver");  
        Connection con=DriverManager.getConnection(  
        "jdbc:mysql://localhost:7101/empDB","root","root");  
        //here empDB is database name, root is username and password 
        

        其中 jdbc 是 API,mysql 是数据库,localhost 是运行 mysql 的服务器名称,我们也可以使用 IP 地址,7101 是端口号,empDB 是数据库名称。我们可以使用任何数据库,在这种情况下,我们需要将 empDB 替换为我们的数据库名称。

        MySQL 连接器数据库 URL 以下是 MySQL Connector 的数据库连接 URL 语法:

        jdbc:mysql://[host][,failoverhost...]
            [:port]/[database]
            [?propertyName1][=propertyValue1]
            [&propertyName2][=propertyValue2].
        

        https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html

        https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-04-18
          • 1970-01-01
          • 2019-10-01
          • 1970-01-01
          • 2020-02-18
          • 2020-05-06
          • 2017-11-09
          相关资源
          最近更新 更多