如何将java连接到Ms Access 2010?

有没有人有任何关于如何将Access 2010连接到java jdbc的想法。 我使用这种方法,但是当我调用它时,它不起作用:

public void loadDb(){ try{ Class.forName("sun.jdbc.JdbcOdbcDriver"); File f = new File(System.getProperty("user.dir")) con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Acess Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","",""); st = con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); }catch(ClassNotFoundException e){e.printStackTrace(); }catch(SQLException e){e.printStackTrace();} } //con and st are already defined 

根据msdn,它应该是sun.jdbc.odbc.JdbcOdbcDriver 。 所以替换这行代码:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

拼写错误? 也许这一行:

 con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Acess Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","",""); 

应该

 con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ="+ f.getPath() + "//db//JavaAccess.accd","",""); 

访问有2 C

创建连接

 public static Connection getConnection() { String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:anime"; //anime is the database String username = "ipieluser"; //leave blank if none String password = "ipielpassword"; //leave blank if none try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { return DriverManager.getConnection(url, username, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } 

怎么称呼:

 public static void main(String args[]) { try { Connection conn = getConnection(); Statement st = conn.createStatement(); st = conn.createStatement(); ResultSet rs = st.executeQuery("SELECT * FROM localTable"); //get and displays the number of columns ResultSetMetaData rsMetaData = rs.getMetaData(); int numberOfColumns = rsMetaData.getColumnCount(); System.out.println("resultSet MetaData column Count=" + numberOfColumns); st.close(); conn.close(); } catch(Exception e) { System.out.println(e.getMessage()); } } 

使用UCanAccess JDBC驱动程序:

 Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); // can be omitted in most cases Connection conn=DriverManager.getConnection("jdbc:ucanaccess://",user, password); 

例如:

 Connection conn=DriverManager.getConnection("jdbc:ucanaccess://c:/pippo.mdb"); 

所以对你的例子来说就是这样

 con = DriverManager.getConnection("jdbc:ucanaccess://"+f.getPath()+"/db/JavaAccess.accd") 

Rishab的回复帮助我连接到我的访问数据库。

我在代码中做了以下更正:

代替

 String url = "jdbc:odbc:anime"; //anime is the database 

我做到了

 String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" + "d://institute//institutedata.accdb"; 

我用路径和扩展名明确定义了驱动程序和完整数据库名称。

因为今天只有我们面临同样的问题,发现要查看java的版本如果你的java版本如果java的版本高于7那么sun.jdbc.odbc.JdbcOdbcDriver将不受支持所以只检查版本java。