“找不到数据源名称,没有默认驱动程序”

时间:2011-03-19 09:02:06

标签: java mysql odbc

java to mysql连接代码:

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        System.out.println("Driver loaded");
        con = DriverManager.getConnection(url, "root", "sai");
        stmt = con.createStatement();
        System.out.println("Connection established");

执行上述代码后

"Driver loaded" message printed on console but,
after that following exception is printed - 
[Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified

我已经为项目

创建了DSN(MYSQL ODBC 3.51驱动程序)

请告诉我上述问题的解决方案。

3 个答案:

答案 0 :(得分:1)

如果可能,请不要使用JdbcOdbc驱动程序,而是使用数据库的纯JDBC驱动程序!

关于如何注册驱动程序的问题,来自java.sql的javadocs,接口驱动程序:

  

强烈建议各自   驱动程序类应该很小   独立使Driver类   无需加载和查询   带来了大量的   支持代码。

     

加载Driver类时,它   应该创建自己的实例   并注册   DriverManager的。这意味着用户   可以通过加载和注册驱动程序   调用

Class.forName("foo.bah.Driver")

单独调用'newInstance'或registerDriver'是Cargo-Cult编程。

答案 1 :(得分:1)

“如果可能的话,不要使用JdbcOdbc驱动程序,而是使用数据库的纯JDBC驱动程序!”

示例MySql纯JDBC-Driver将是 mysql-connector-java-5.xxjar 文件中的 com.mysql.jdbc.Driver 类从MySQL下载。

wikipedia

提供了对JDBC和JDBC-ODBC之间差异的一个很好的解释

答案 2 :(得分:0)

我已经做了一段时间,但您可以尝试使用DriverManager类显式注册您的驱动程序。这意味着你不会依赖于在背景中隐含发生的事情。

DriverManager.registerDriver((Driver) 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());
con = DriverManager.getConnection(url, "root", "sai");

这将确保加载“sun.jdbc.odbc.JdbcOdbcDriver”类并将其连接到DriverManager。