如何将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。