java---access处理(mdb、accdb)---使用jackcess包
2017-03-27 10:31
190 查看
在使用jackcess前,学习了maxuyang1987的文章,获益良多,把自己的代码放在这里也给后来人一个参考。
http://blog.csdn.net/maxuyang1987/article/details/18705267。
jackcess不支持sql查询,使用起来还是有些不方便
对了,使用的日志配置文件log4j.properties文件放在程序根目录下。
内容如下:
### 设置###
log4j.rootLogger = debug,stdout,common,error
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
### %-5p,应该是占5个字符的位置
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.logger.common=info
log4j.appender.common = org.apache.log4j.DailyRollingFileAppender
###在名称后面加入时间区分 有个问题,就是第一个文件不会自动添加日期,这个是log4j不支持###
###log4j.appender.common.DatePattern='_'yyyy-MM-dd-HH-mm-ss'.log'
###如果存在同名文件,则在源文件后追加 ###
log4j.appender.common.Append = true
###这是过滤器,如果级别低于这个设置的级别,不被记录显示 ###
log4j.appender.common.Threshold = INFO
log4j.appender.common.layout = org.apache.log4j.PatternLayout
log4j.appender.common.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - %m%n
log4j.appender.common.File=./log/common.log
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.error.DatePattern='_'yyyy-MM-dd-HH-mm-ss'.log'
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - %m%n
log4j.appender.error.File =./log/error.log
http://blog.csdn.net/maxuyang1987/article/details/18705267。
jackcess不支持sql查询,使用起来还是有些不方便
package com.uni.tools.demo; import com.healthmarketscience.jackcess.*; import com.healthmarketscience.jackcess.util.ImportUtil; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import java.io.File; import java.io.IOException; import java.sql.SQLException; import java.sql.Types; import java.util.Collections; import java.util.Date; import java.util.Map; /** * Created by huangyi5230 on 2017/3/26. */ public class ReadAccessDemo { //mdb accdb //mdb是accdb的早期版本格式,2007以后,使用accdb格式 /** * @param args * @throws */ public static Logger logger = Logger.getLogger(ReadAccessDemo.class); public static void main(String[] args) throws IOException {
//使用了日志文件,也可以不用,会有warnning提示,不影响运行 BasicConfigurator.configure (); PropertyConfigurator.configure("log4j.properties"); logger.info("开始运行");
//可以分别测试下面的函数的运行情况
//getAccessDataTable(); createTable(); //createTableRecByCsv() ; //deleteRec(); } /** * 读取指定表格 * @throws IOException */ //程序需要引入3个包 //一个是jackcess //另一个是commons-logging //第3个是commons-lang
//log4j是日志文件,不是必须强制引入的
public static void getAccessDataTable() throws IOException{
//这里的data.accdb是access文件的名称,后缀名支持accdb和mdb。照片列表是access文件中的一个表。accdb就相当于一个数据库,照片列表就相当于数据库中的一个表 Table table = DatabaseBuilder.open(new File("d:\\data.accdb")).getTable("照片列表"); for(Row row : table) {
//顺序取出表中的字段和值 //字段名区分大小写,如果不一致会导致取值为null System.out.println("--照片名称--" + row.get("照片名称")+"--poinum--" + row.get("POINUM")); } } /** * 创建表并写入数据 * @throws IOException */ public static void createTable() throws IOException{
//这里同样支持mdb和accdb Database db = DatabaseBuilder.create(Database.FileFormat.V2000, new File("d:\\new.accdb")); Table newTable; try {
//刚才是创建文件,这里是在文件里创建表,字段名,字段类型 newTable = new TableBuilder("NewTable") .addColumn(new ColumnBuilder("a") .setSQLType(Types.INTEGER)) .addColumn(new ColumnBuilder("b") .setSQLType(Types.VARCHAR)) .toTable(db);
//插入一条数据测试 newTable.addRow(1, "foo"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 将CSV文件的内容复制到一个新表: * @throws IOException */ public static void createTableRecByCsv() throws IOException{ Database db = DatabaseBuilder.open(new File("d:\\new.mdb"));
//可以是文本文件,Delimiter是选择分隔符,这里使用逗号 new ImportUtil.Builder(db, "NewTable22").setDelimiter(",").importFile(new File("c:\\test.csv")); db.close(); } /** * 删除一条数据 * @throws IOException */ public static void deleteRec() throws IOException{ Table table = DatabaseBuilder.open(new File("c:\\new.mdb")).getTable("NewTable22");
//我认为这里应该是查找a,foo才对,原文不知道是否笔误了Row row = CursorBuilder.findRow(table, Collections.singletonMap("a", "foo")); if(row != null) { System.out.println("Found row where 'a' == 'foo': " + row); table.deleteRow(row); } else { System.out.println("Could not find row where 'a' == 'foo'"); } }}
对了,使用的日志配置文件log4j.properties文件放在程序根目录下。
内容如下:
### 设置###
log4j.rootLogger = debug,stdout,common,error
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
### %-5p,应该是占5个字符的位置
log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.logger.common=info
log4j.appender.common = org.apache.log4j.DailyRollingFileAppender
###在名称后面加入时间区分 有个问题,就是第一个文件不会自动添加日期,这个是log4j不支持###
###log4j.appender.common.DatePattern='_'yyyy-MM-dd-HH-mm-ss'.log'
###如果存在同名文件,则在源文件后追加 ###
log4j.appender.common.Append = true
###这是过滤器,如果级别低于这个设置的级别,不被记录显示 ###
log4j.appender.common.Threshold = INFO
log4j.appender.common.layout = org.apache.log4j.PatternLayout
log4j.appender.common.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - %m%n
log4j.appender.common.File=./log/common.log
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.error.DatePattern='_'yyyy-MM-dd-HH-mm-ss'.log'
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - %m%n
log4j.appender.error.File =./log/error.log
相关文章推荐
- java---access文件(accdb\mdb)文件处理方式比较jackcess 和 Access_JDBC30
- java使用ODBC连接Access(mdb)文件错误解决方法
- 在Java中使用正则表达式处理文本
- 使用 Java 进行图像处理 - 取得图像上指定位置像素的 rgb 颜色分量
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用 Java 进行图像处理 - 编码输出高分辨率图像
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用handleEvent()方法,action()方法和mouseDown()方法处理事件的JAVA Application程序.
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 在EasyJWeb中使用Java Excel API 处理电子表格
- HTTP头部详解及使用Java套接字处理HTTP请求
- 使用 Java 进行图像处理 - 将彩色图像转换为灰度图
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- java图片处理和jdom的使用
- 在EasyJWeb中使用Java Excel API 处理电子表格
- 使用 Java 进行图像处理 - 图像缩放
- 使用java处理XML
- Java异常处理机制的详细讲解和使用技巧
- 在EasyJWeb中使用Java Excel API 处理电子表格