连接Access数据库


前言

最近想做一个系统,发现公司电脑的数据库只有Access,所以百度了好久怎么用Java去连接,但大部分都是使用​​sun.jdbc.odbc.JdbcOdbcDriver​​​这个驱动来连接,可是在Java8之后已经删除该驱动,最后找了好久发现可以使用​​ucanaccess​​驱动来代替。下面是代码。

准备工作

在使用之前我们需要准备好需要的Jar包


  • ucanaccess-x.x.x.jar
  • HSQLDB (hsqldb.jar, version 2.5.0 or newer)
  • Jackcess (jackcess-2.x.x.jar)
  • commons-lang (commons-lang3-3.0.jar, or newer 3.x version)
  • commons-logging (commons-logging-1.2.jar, or newer 1.x version)

这些jar包可以在maven仓库中搜索到,地址:https://mvnrepository.com

代码

package com.hz.util;

import com.hz.entity.Users;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class AccessUtils {
static String accessFile = "D:/JavaFile/db/a.accdb"; //本地的Access数据库地址

public static void main(String[] args) throws SQLException {
System.out.println(getUserList());
}

public static List<Users> getUserList(){
Connection conn =null;
String sql = "select * from `users`";
ResultSet rs = null;
List<Users> list = new ArrayList<Users>();
try {
conn = getConntection();
rs = conn.createStatement().executeQuery(sql);
while (rs.next()){
Users users = new Users();
users.setName(rs.getString("name"));
users.setUsername(rs.getString("username"));
users.setPassword(rs.getString("password"));
list.add(users);
}
}catch (SQLException | ClassNotFoundException e){
e.printStackTrace();
}
return list;
}

public static Connection getConntection() throws SQLException, ClassNotFoundException {
Properties prop = new Properties();
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
prop.put("charSet","gb2312"); //防止乱码
return DriverManager.getConnection("jdbc:ucanaccess://"+accessFile, prop);
}
}