简体   繁体   中英

Java Spring Error: Could not get JDBC Connection

I am doing a small exercise using Spring framework and JDBC, and I got the following error:

    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)

My 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>

and 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>

Database: MySQL, I use Xampp and phpmyadmin to manage the database: IDE, esclipse, Maven project!

Am I missing libraries or something?

Please tell me where am I getting wrong: :D Thanks in advance!

are u sure the connection string correct?

default url

jdbc:mysql://localhost:3306/dbname

Clean And Build Your Projrct..

Tomcat server Terminal and Restart.

take your URL correct.

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

When I typed in "localhost", it somehow didn't work but this:

jdbc:mysql://127.0.0.1:3306/dbname

seemed to work for me....

Please refer the below article to construct JDBC URL to frame in different ways for mysql.

Driver class: The driver class for the mysql database is com.mysql.jdbc.Driver. Connection URL: The connection URL for the mysql database is 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 

where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running, we may also use IP address, 7101 is the port number and empDB is the database name. We may use any database, in such case, we need to replace the empDB with our database name.

MySQL Connector Database URL The following is the database connection URL syntax for MySQL Connector:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM