Java &引用;找不到数据源名称且没有默认驱动程序“;
java到mysql的连接代码:Java &引用;找不到数据源名称且没有默认驱动程序“;,java,mysql,odbc,Java,Mysql,Odbc,java到mysql的连接代码: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); System.out.println("Driver loaded"); con = DriverManager.getConnection(url, "root", "sai"); stmt = con.createStatement(); System.out.println("Conn
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驱动程序)
请告诉我上述问题的解决方案。我已经做了一段时间了,但您可以尝试向DriverManager类显式注册驱动程序。这意味着您不依赖于在后台隐式发生的一些看不见的事情
DriverManager.registerDriver((Driver)
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance());
con = DriverManager.getConnection(url, "root", "sai");
这将确保加载“sun.jdbc.odbc.JdbcOdbcDriver”类并将其连接到DriverManager。如果可能,请不要使用JdbcOdbc驱动程序,而是为数据库使用纯jdbc驱动程序 关于如何注册驱动程序的问题,请参阅javadocs For java.sql的接口驱动程序: 强烈建议每个 驱动程序级别应为小型和小型 使驱动程序类 可以加载和查询,而无需 带来大量的 支持代码 加载驱动程序类时,它 应该创建自身的实例 并在 司机经理。这意味着用户 可以通过以下方式加载和注册驱动程序: 召唤
Class.forName("foo.bah.Driver")
单独调用'newInstance'或registerDriver'是Cargo Cult编程。“如果可能,请不要使用JdbcOdbc驱动程序,而是为数据库使用纯JDBC驱动程序!”
MySql纯JDBC驱动程序的一个示例是可从下载的MySql-connector-java-5.x.x.jar文件中的com.MySql.JDBC.Driver类
关于JDBC和JDBC-ODBC之间的区别,可以在上找到一个很好的解释。您还没有告诉我们您的url,这使得诊断有点困难……您的标记是“java swing struct”,它与标题
swing组件和struct java编程
,这与文本无关。我也会编辑它。请小心一点。请强调您的问题所在..newInstance不是必需的,registerDriver
相同。不要隐藏异常:catch(SQLException e){e.printStackTrace();}
“未找到数据源名称”是错误-可能是URL?我不知道mysql是什么样子。请看我更新的帖子(因为在评论中布局不太好),我引用了javadocs。