具體步驟如下:
一、連接access資料庫
建立AccessDbUtil類,連接資料庫
import java.sql.Connection; import java.sql.DriverManager; /** * 获取Access连接 * * @author dofun * */ public class AccessDbUtil { public static Connection getDbConnection() { // 数据库url String url = "jdbc:Access:///E:ICD10.mdb"; Connection conn = null; try { // 驱动加载 Class.forName("com.hxtt.sql.access.AccessDriver").newInstance(); conn = DriverManager.getConnection(url); return conn; } catch (Exception e) { System.out.println("Access连接失败"); } return conn; } }
二、讀取Access資料並保存在mysql資料庫
1、取得access資料庫連線
2、查詢表數據,並儲存
3、關閉連線資源
/** * 同步疾病,手术 * * @return */ @RequestMapping(value = "importJbbm") @ResponseBody public String importJbbm() { // 获取数据库连接 Connection conn = AccessDbUtil.getDbConnection(); PreparedStatement pst = null; ResultSet rs = null; Boolean a = true; int id = 30000; try { for (int i = 1; i > 0; i++) { // 手术 pst = conn.prepareStatement("select * from sJBBMML where id > " + id + " and LB = 'S' "); List<IcdSsbm> jbs = new ArrayList<>(); rs = pst.executeQuery(); while (a == rs.next()) { if (StringUtils.isNotBlank(rs.getString(2))) { IcdSsbm jb = new IcdSsbm(); jb.setCode(rs.getString(2)); jb.setName(rs.getString(5)); jb.setType(rs.getString(11)); jbs.add(jb); } else { a = false; i = 0; } // System.out.println(rs.getString(2)); // System.out.println(rs.getString(5)); // System.out.println(rs.getString(11)); } if (ListUtils.isNotEmpty(jbs)) { // 批量保存 icdSsbmService.saveBatch(jbs); } id += 1000; } } catch (SQLException e) { } finally { try { // 关闭资源 rs.close(); pst.close(); conn.close(); } catch (SQLException e) { } } return "导入完成"; }
問題:
如果Access資料庫設定了密碼,取得連線的時候也加了密碼參數,還是出現錯誤,找不到原因,最後就把Access資料庫密碼去掉了。
Access的分頁問題,一次只能查詢出1000條數據,其實Access本身是有分頁查詢的,只是看起很繁瑣我並沒有用,而且在數據量大的時候性能並不是很好。所以我是採用循環的形式,簡單。
用的是Access_JDBC30.jar,java1.8竟然不支援Access了。網路上好像有破解好的驅動,說是破了分頁查詢的限制。
推薦教學:access資料庫教學
#以上是java實作連接access資料庫並讀取資料的操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!