准备做一个java应用程序,连接access数据库将access加入到ODBC数据源这种连接方式我会,但是我想知道有没有一种方式直接连接指定access数据库文件,不需要将access加入到ODBC数据源。vc++可以实现,不知道java能不能这样访问一个access文件。access数据库文件的访问不依赖于系统……就这个意思

解决方案 »

  1.   

    Access 不是 C/S 结构数据库,因此也没有什么 JDBC 驱动程序,除了 JDBC/ODBC 桥之外,没有其他办法。
      

  2.   

    Jackcess is a pure Java library for reading from and writing to MS Access databases (currently supporting versions 2000-2007).
    // Displaying the contents of a table:
    System.out.println(Database.open(new File("my.mdb")).getTable("MyTable").display());
    // Iterating through the rows of a table:
    Table table = Database.open(new File("my.mdb")).getTable("MyTable");
    for(Map<String, Object> row : table) {
      System.out.println("Column 'a' has value: " + row.get("a"));
    }
    // Searching for a row with a specific column value:
    Map<String, Object> row = Cursor.findRow(table, Collections.singletonMap("a", "foo"));
    if(row != null) {
      System.out.println("Found row where 'a' == 'foo': " + row);
    } else {
      System.out.println("Could not find row where 'a' == 'foo'");
    }
    // Creating a new table and writing data into it:
    Database db = Database.create(new File("new.mdb"));
    Table newTable = new TableBuilder("NewTable")
      .addColumn(new ColumnBuilder("a")
                 .setSQLType(Types.INTEGER)
                 .toColumn())
      .addColumn(new ColumnBuilder("b")
                 .setSQLType(Types.VARCHAR)
                 .toColumn())
      .toTable(db);
    newTable.addRow(1, "foo");
    // Copying the contents of a JDBC ResultSet (e.g. from an external database) into a new table:
    Database.open(new File("my.mdb")).copyTable("Imported", resultSet);
    // Copying the contents of a CSV file into a new table:
    Database.open(new File("my.mdb")).importFile("Imported2", new File("my.csv"), ",");
      

  3.   

    我感觉 Access 与其说是数据库,还不如说是办公用品,呵呵。那些支持的 JDBC 驱动也只是使用 JDBC 去适配而已,就好比 Excel 也有 JDBC 驱动一样。我想实际项目中没人会去使用 Access 的,这个商业产品不论是效率、安全上都没法跟开源的 C/S 结构数据库相提并论。
      

  4.   

    嗯,是的,access做项目确实不理想,但是我们老师要我们交的大作业要求尽量简单,如果要配置一个mysql或者sql server什么的比较麻烦,所以尽量避免使用,没办法……
      

  5.   

    驱动: com.hxtt.sql.access.AccessDriver
    url:jdbc:access:///f:/MyEclipse/MyEclipse5.5/work/Car4_2/Car/database/Car.mdbf:后面是access存在的地址
    我记得我以前用hibernate做过,应该可以的
      

  6.   


    import java.sql.*; 
    import java.io.*; class Access{ 
        public static void main(String[] args){ 
          String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\helpdb.mdb"; 
                     Connection conn = null; 
            try{ 
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                conn = DriverManager.getConnection(url , "" , ""); 
                Statement statement=conn.createStatement(); 
                ResultSet rs=statement.executeQuery("select * from TAttachment");             while(rs.next()){ 
                    System.out.println(rs.getString(1)); 
                } 
            }catch(Exception e){ 
                e.printStackTrace(); 
            }finally{ 
                try{ 
                    if(conn!=null) 
                        conn.close(); 
                }catch(Exception e){ 
                    e.printStackTrace(); 
                } 
            } 
        }//end of main 
    }
    楼主是要这种么 也不用设置什么数据源还是说要存java驱动啊在windows的话不建议用纯java驱动 我下了几个效果不好 微软的兼用型不错 access就不考虑太多速度了
      

  7.   


    我可以很肯定的告诉你。
    N多人用它作为数据使用,曾经我也很努力说用还不如用MYSQL,最后我沉默了。
      

  8.   

    驱动: com.hxtt.sql.access.AccessDriver
    url:jdbc:access:///f:/MyEclipse/MyEclipse5.5/work/Car4_2/Car/database/Car.mdb  这样是对的
      

  9.   

    纯Java RDBMS:H2、HSQLDB都是不到 1M的单jar文件。简单易用、比Accesss方便多了。
      

  10.   

    JDBC_DRIVER = sun.jdbc.odbc.JdbcOdbcDriver
    DB_URL = jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=PhoneBook.mdb
    USER = ""
    PSD =""driver和url上面都有了,蓝色的部分就是mdb文件的路径,可以是绝对路径也可以是相对路径哦!