源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

/**
* 根据sql语句将查询Access
* @param sql 查询Access数据库的语句
* @param accessUrl Access数据库地址
* @return List<Map>
* /
public List<Map<String, Object>> selectAccess(String sql, String accessUrl) {
List<Map<String, Object>> mapList = new ArrayList<>();
Properties prop = new Properties();
/* 中文乱码处理 */
prop.put("charSet", "utf-8");
prop.put("user", "");
prop.put("password", "");
PreparedStatement ps = null;
Statement stmt = null;
ResultSet rs = null;
try {
/* 加载驱动&建立连接 */
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://" + accessUrl, "账号", "密码");
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();
while (rs.next()) {
Map<String, Object> map = new HashMap<>(16);
for (int i = 1; i <= data.getColumnCount(); i++) {
/* 列名 */
String columnName = data.getColumnName(i);
/* 值 */
String columnValue = rs.getString(i);
map.put(columnName, columnValue);
}
mapList.add(map);
}
/* 关闭连接 */
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return mapList;
}

注意事项

  1. Access数据库时间的格式为m/d/yyyy,即使显示出来的数据为yyyy/m/d
  2. JAVA 7以及之前的版本自带连接数据库的jdbc,但是之后的版本jdbc被移除,所以使用JAVA 8以及更高版本连接Access数据库时需要导入jar包
  3. Access_JDBC30.jar付费使用,不付费会有连接次数和获取的最大记录条数限制(50次连接,1000最大记录)
  4. 连接Access数据库尽量使用UCanAccess.jar,目前没有任何限制