我们如何使用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语句会安全很多。