当前位置: 首页 > 知识库问答 >
问题:

加载了JDBC MySQL驱动程序,但无法通过Spring配置连接到MySQL

巫马松
2023-03-14

使用JDBC Driver Manager连接到MySQL DB时,连接成功并按预期检索结果集。但是当尝试使用org.springframework.jdbc.datasource.DriverManagerDataSource或org.springframework.jdbc.datasource.SimpleDriverDataSource通过Spring配置进行连接时

JDBC驱动程序com.mysql.JDBC.driver被加载,但无法与MySQL建立连接。

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();
        }

    }
}
<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个答案

苏华藏
2023-03-14

您的连接字符串不正确。在连接字符串中有一个错误,您将msql而不是mysql放入了连接字符串。连接字符串应该如下所示:

jdbc:mysql://localhost:3306/FR
 类似资料:
  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。

  • 我正在尝试使用本教程连接Oracle数据库。当我使用命令行:java-cp c:\jdbc-test\ojdbc6.jar;c:\jdbc-test OracleJDBC我已经将ojdbc6.jar与OracleJDBC.java放在同一个文件夹中。现在我需要在Eclipse上运行它,但它给我一个错误: 是因为OJDBC6.jar位置吗?

  • 即使驱动程序类名已定义,我也会收到此错误 Java语言lang.IllegalStateException:无法加载驱动程序类:com。mysql。jdbc。组织的驱动程序。springframework。util。明确肯定state(Assert.java:392)~[spring-core-4.2.1.RELEASE.jar:4.2.1.RELEASE]位于org。springframewor

  • 我使用JBoss作为7.1.1.final作为我的应用程序服务器。 我已经在JBoss社区用户论坛上发布了我的问题:question-here jboss-as-cmt war工作得很好,即我能够将客户添加到发票中。我可以psql进入数据库引擎,我可以看到所有的记录。我唯一的问题是我不能使用h2console webapp进入我创建的jboss-as-cmt postgres数据库。 我使用:“o

  • 这很奇怪。我使用的是运行VirtualBox 4.2.6的Mac OS X 10.7.5 64位主机。我有一个Windows 7 SP1来宾(64位),带有运行Microsoft SQL Server Express 2012的桥接网络。我将 SQL Server 配置为在端口 1433 上使用 TCP/IP,而不是动态端口(设置为空,而不是 0)。Windows 7 来宾的 IPv4 地址为 1

  • 嘿,伙计们,还有一个问题,下面是信息