繁体   English   中英

如何将 java 连接到 Ms Access 2010?

[英]How to connect java to 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","","");

Access 有 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://<mdb or accdb file path>",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";

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

As today only we face the same problem and found that to check the version of java if your version of java if the version of the java is above 7 then the sun.jdbc.odbc.JdbcOdbcDriver will not be supported so just check the version of java。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM