64位windows系統連接Access數據庫,程序中可能需要修改Access數據庫連接:
32位:String strUrl = “jdbc:odbc:driver={microsoft Access Driver (*.mdb)};DBQ=c://demo.mdb”
64位:String strUrl = “jdbc:odbc:driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=c://demo.mdb”
修改后仍報錯則進入“控制面板”-》“管理工具”-》“數據源(ODBC)”查看系統是否存在Access驅動
若不存在則需要安裝Microsoft Access驅動程序:
官方:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
32位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/
AccessDatabaseEngine.exe
64位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/
AccessDatabaseEngine_X64.exe
下面是連接access的.mdb文件,解析代碼:
package?test; import?java.io.File; import?java.sql.Connection; import?java.sql.DriverManager; import?java.sql.ResultSet; import?java.sql.ResultSetMetaData; import?java.sql.Statement; import?java.util.Properties; public?class?Test?{ ????????/** ?????*?TODO?:?讀取文件access ?????*?? ?????*?@param?filePath ?????*?@return ?????*?@throws?ClassNotFoundException ?????*/?? ????public?static?void?readFileACCESS(File?mdbFile)?{?? ????????Properties?prop?=?new?Properties();?? ????????prop.put("charSet",?"gb2312");?//?這里是解決中文亂碼?? ????????prop.put("user",?"");?? ????????prop.put("password",?"");?? ????????//String?url?=?"jdbc:odbc:driver={Microsoft?Access?Driver?(*.mdb)};DBQ="?+?mdbFile. ????????getAbsolutePath();?? ????????String?url?=?"jdbc:odbc:driver={Microsoft?Access?Driver?(*.mdb,?*.accdb)};DBQ="+?mdbFile. ????????getAbsolutePath();?? ????????Statement?stmt?=?null;?? ????????ResultSet?rs?=?null;?? ????????String?tableName?=?null;?? ????????try?{?? ????????????Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");?? ????????????//?連接到mdb文件?? ????????????Connection?conn?=?DriverManager.getConnection(url,?prop);?? ????????????ResultSet?tables?=?conn.getMetaData().getTables(?? ????????????????????mdbFile.getAbsolutePath(),?null,?null,?? ????????????????????new?String[]?{?"TABLE"?});?? ????????????//?獲取第一個表名?? ????????????if?(tables.next())?{?? ????????????????tableName?=?tables.getString(3);//?getXXX?can?only?be?used?once?? ????????????}?else?{?? ????????????????return;?? ????????????}?? ????????????stmt?=?(Statement)?conn.createStatement();?? ????????????//?讀取第一個表的內容?? ????????????rs?=?stmt.executeQuery("select?*?from?"?+?tableName);?? ????????????ResultSetMetaData?data?=?rs.getMetaData();?? ????????????while?(rs.next())?{?? ????????????????for?(int?i?=?1;?i?<p>python學習網,大量的免費<a href="https://www.php.cn/topic/access/" target="_blank">access數據庫教程</a>,歡迎在線學習!</p>
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END