我们如何使用java jdbc连接Access数据库并进行读写呢?这个只需要使用UcanaccessDriver这样的驱动就可以了,首先java连接Access数据库需要引入net相关的jar包,Access数据库一般是用于windows系统中,数据库格式为“xxx.db”后缀。
步骤一:我们在maven中引入Access驱动相关的jar包,这是至关重要的,代码如下:
<dependency> <groupId>net.sf.ucanaccess</groupId> <artifactId>ucanaccess</artifactId> <version>4.0.2</version> </dependency>
步骤二:开发DButil工具类,用于开启Access数据库的Connection连接池,后面会使用这个Connection对象读写Access数据库,传入的dbpath参数为“xxx.db”的Access数据库文件路径:
package cn.com.tpyyes.utils;
import java.io.File;
import java.sql.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DButil {
private static final Logger log = LoggerFactory.getLogger(DButil.class);
public static Connection ConnectAccessFile(String dbpath) throws Exception{
File dbFile = new File(dbpath);
if(!dbFile.exists()){
log.error("db数据库文件不存在,请确认路径是否正确:{}", dbpath);
return null;
}else{
log.info("读取数据库文件,路径:{}", dbpath);
}
Connection conn = null;
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");//这个驱动的地址不要改
String dbur1 = "jdbc:ucanaccess:///"+dbpath;
conn = DriverManager.getConnection(dbur1, "","");
return conn;
}
public static void close(Connection con) {
try {
if(con!=null) con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(PreparedStatement ps) {
try {
if(ps!=null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs) {
try {
if(rs!=null) rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}步骤三:本步骤介绍如何使用使用Connection来连接Access数据库,并查询一条数据,代码如下:
@Override
public void queryData(String dbpath,String startTime,String endTime) {
Connection conn =null;
PreparedStatement ps =null;
ResultSet rs =null;
try {
conn = DButil.ConnectAccessFile(dbpath);
if(conn==null){
return;
}
ps = conn.prepareStatement("select "
+ "count(*),macid from normalimg where createtime >=? and createtime <=? "
+ "GROUP BY macid");
//设置查询参数
ps.setString(1, startTime);
ps.setString(2, endTime);
//执行sql语句
rs = ps.executeQuery();
while (rs.next()) {
//输出查询结果
System.out.println("结果一:"+rs.getInt(1)+"===结果二:"+rs.getInt(2));
}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally{
//关闭相关的连接
DButil.close(conn);
DButil.close(ps);
DButil.close(rs);
}
}java连接Access数据库主要用到的就是ucanaccess驱动,其它地方和连接mysql,oracle都差不多,jdbc是效率非常高的,PrepareStatement为预处理对象,在jdbc中建议使用此对象执行sql语句会安全很多。