2017-08-07 27 views
0

使用JDBC驱动程序管理器连接到MySQL DB时,连接成功并按预期检索结果集。但是,试图利用任何org.springframework.jdbc.datasource.DriverManagerDataSource或 org.springframework.jdbc.datasource.SimpleDriverDataSource通过Spring配置文件来连接时加载的JDBC MySQL驱动程序但未能通过Spring配置连接到MySQL

JDBC驱动程序com.mysql.jdbc.Driver被加载,但不能使与MySQL的连接。

测试应用等级: package com.xxxx.xxxx.xxxx;数据源的

import com.xxxx.xxxx.xxxx.dao.TimeslotDAO; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class App { 

    public static void main(String[] args) { 
     //testClassic(); // This works and gets the results. 
     testSpring(); // Fails with SQLException. 
    } 

    private static void testSpring(){ 
     ApplicationContext ctx = new ClassPathXmlApplicationContext("Spring-Module.xml"); 
     TimeslotDAO timeSlot = (TimeslotDAO) ctx.getBean("timeslotDAO"); 
     timeSlot.populateTimeSlotsCache(); 
    } 

    private static void testClassic(){ 
     try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     try { 
      Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/FR", "root", "xxxx"); 
      if(conn!=null) { 
       String sql = "select * from TB_AUTO_xxx_SLOT_xxx " + 
         "where i_book_id =2639"; 
       PreparedStatement stmt = conn.prepareStatement(sql); 
       ResultSet rs = stmt.executeQuery(); 
       while(rs.next()){ 
        System.out.println(rs.getLong(1)); 
       } 
       if(rs!=null) rs.close(); 
       if(stmt!=null)stmt.close(); 
       if(conn!=null)conn.close(); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

    } 
} 

Spring配置文件:

<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
     <property name="url" value="jdbc:msql://localhost:3306/FR" /> 
     <property name="username" value="root"/> 
     <property name="password" value="xxxx"/> 

</bean> 

异常的日志:

INFO: Loaded JDBC driver: com.mysql.jdbc.Driver 
java.sql.SQLException: No suitable driver found for jdbc:msql://localhost:3306/FR 
    at java.sql.DriverManager.getConnection(DriverManager.java:689) 
    at java.sql.DriverManager.getConnection(DriverManager.java:208) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:174) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:165) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) 
    at com.xxxx.xxxx.xxxx.dao.impl.TimeslotDAOImpl.populateTimeSlotsCache(TimeslotDAOImpl.java:23) 
    at com.xxxx.xxxx.xxxx.App.testSpring(App.java:22) 
    at com.xxxx.xxxx.xxxx.App.main(App.java:16) 
+1

你错过这里Y:'JDBC:msql' – Jens

+0

@Jens什么小姐,对不起,听不懂 – user2166213

+0

的jdbc:mSQL的必须为jdbc:M ** Y * * SQL:value =“jdbc:msql:// localhost:3306/FR” - > value =“jdbc:m ** y ** sql:// localhost:3306/FR” – Jens

回答

0

你的连接字符串不正确。您在连接字符串中输入msql而不是mysql。连接字符串应该是这样的:

jdbc:mysql://localhost:3306/FR 
相关问题