ste*_*tur 3 java sql swing netbeans jdbc
我在一个简单的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());
}
}
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,我在运行输出窗口中收到以下消息:
没有为jdbc找到合适的驱动程序:odbc:Driver = {Microsoft Access Driver( .mdb,.accdb)}; Dbq = C:\ Users\Bruger\Documents\Database11.accdb
我的代码顶部有导入:
import java.sql.*;
Run Code Online (Sandbox Code Playgroud)
我也尝试从"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");
Run Code Online (Sandbox Code Playgroud)
所以:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\Users\\Bruger\\Documents\\Database11.accdb");
Run Code Online (Sandbox Code Playgroud)
还值得一提的是,每次获得连接时都不需要这样做,只需确保一次加载即可.
有很多与此相关的stackoverflow问题,但其原因如下:
来源 - 来自Java教程:
在以前的JDBC版本中,要获得连接,首先必须通过调用Class.forName方法来初始化JDBC驱动程序.此方法需要java.sql.Driver类型的对象.每个JDBC驱动程序都包含一个或多个实现接口java.sql.Driver的类....自动加载在类路径中找到的任何JDBC 4.0驱动程序.(但是,必须使用方法Class.forName手动加载JDBC 4.0之前的任何驱动程序.)
在一个相关和非常重要的说明.
我还建议查找如何处理连接.如果您不熟悉数据库连接和游标等外部资源,则很容易泄露.查找'try finally blocks',或者最近在java 7+'try-with-resources'中查找.