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驱动程序)请告诉我上述问题的解决方案。
答案 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下载。
提供了对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。