【问题标题】:How to connect java to Ms Access 2010?如何将 java 连接到 Ms Access 2010?
【发布时间】:2011-06-14 04:27:58
【问题描述】:

有没有人知道如何将 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

【问题讨论】:

  • 此外,如果您发现问题的答案很有用,您应该接受它们的答案(请参阅那里有一个勾号)并使用upvotes。它将帮助您获得更多答案。
  • 请注意,JDBC-ODBC 桥已从 Java 8 中删除并且不受支持(参考:herehere)。 UCanAccess 是一种流行的替代方案(详情 here)。

标签: java jdbc odbc


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    拼写错误?也许这一行:

    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

    【讨论】:

    【解决方案3】:

    创建连接

    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());
     }
    }
    

    【讨论】:

    • 嗨,我仍然无法访问 getConnection() 方法,因为它说类型为 void 不能返回,另一方面,它不识别方法 getConnection()其他一些地方。
    • 将其声明为公开它会起作用我也编辑了代码。
    【解决方案4】:

    使用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")
    

    【讨论】:

      【解决方案5】:

      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";
      

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

      【讨论】:

        【解决方案6】:

        今天才遇到同样的问题,发现要检查java的版本,如果你 java的版本 如果java的版本在7以上,那么sun.jdbc.odbc.JdbcOdbcDriver将不被支持,所以只需检查java的版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 1970-01-01
          • 2017-11-15
          • 2017-12-31
          • 2012-03-03
          • 2011-05-13
          • 1970-01-01
          相关资源
          最近更新 更多