我在一个简单的java应用程序中有一个Jbutton(GetDataFromDB),它假设将下面代码中路径中所示的数据库中的数据加载到应用程序中的Jtable中。
将答案编辑为代码:
private void GetDataFromDBActionPerformed(java.awt.event.ActionEvent evt) {
Connection con;
ResultSet rs = null;
Statement stmt;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Driver={MS Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\Bruger\Documents\Database11.accdb");
stmt = con.createStatement();
String query = null;
query = "select * from cost";
rs = stmt.executeQuery(query);
i = 0;
while (rs.next()){
i = i + 1;
jTable.getModel().setValueAt(rs.getString(1), i, 1);
jTable.getModel().setValueAt(rs.getString(2), i, 2);
}
rs.close();
stmt.close();
con.close();
} catch(Exception err){
System.out.println(err.getMessage());
}
}
当我按下按钮时,我在运行输出窗口中得到以下消息:
未找到适用于jdbc:odbc的驱动程序:driver={Microsoft Access driver(.mdb,.accdb)};Dbq=C:\Users\Bruger\Documents\Database11.accdb
我在代码的顶部有导入:
import java.sql.*;
我也尝试过从"Microsoft Access Driver"更改为"MS Access Driver
未找到适用于jdbc:odbc的驱动程序:driver={MS Access driver(.mdb,.accdb)};Dbq=C:\Users\Bruger\Documents\Database11.accdb
我真的很感谢你的帮助、投入和反馈。
取决于驱动程序和如果您是JDK 6**之前的版本!
您需要注册驱动程序。
尝试添加:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
因此:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Users\Bruger\Documents\Database11.accdb");
还值得一提的是,您不需要每次连接时都这样做,只需确保类已加载一次即可。
与此相关的问题很多,但原因如下:
来源:Java教程:
在JDBC的早期版本中,要获得连接,首先必须通过调用方法Class.forName初始化JDBC驱动程序方法需要一个java.sql.Driver类型的对象。每个JDBC驱动程序包含一个或多个实现接口的类java.sql.Driver….在类中找到的任何JDBC 4.0驱动程序路径被自动加载。(但是,必须手动加载JDBC 4.0之前的驱动程序,方法为Class.forName.)
在一个相关且非常重要的方面。
我还建议查找如何处理连接。如果您不熟悉数据库连接和游标等外部资源,它们很容易泄露。查找"tryfinally blocks",或者最近在java7+中查找"try-with-resources"。