关于Java数据库查询结果保存到DBF的小小总结^_^
来源:互联网 发布:怎么看淘宝店网址 编辑:程序博客网 时间:2024/06/05 16:46
有用到JAVADBF包,但是有许多不适合的地方。自己有修改,先码这,下次看起来方便点。。。 `这里写代码片`另,DBF文件格式需了解。如,0x0D结束文件头,每行字段值以0x20开头,文件以0x1A结尾等等。
大致:
准备好列数、行数、每个字段长度,字段名以及字段类型
rs = stmt.executeQuery(sql); // 获得ResultSet的总行数 rs.last(); rowCount = rs.getRow(); rs.beforeFirst(); // 表的列数 ResultSetMetaData rsmd = rs.getMetaData(); columnCount = rsmd.getColumnCount(); columnName = new String[columnCount]; fieldLength = new int[columnCount]; columnData = new Object[columnCount]; columnType = new String[columnCount]; System.out.println(rowCount); System.out.println(columnCount); for (int i = 1; i <= columnCount; i++) { // 字段名 columnName[i-1] = rsmd.getColumnName(i); // 字段长度 fieldLength[i-1] = rsmd.getColumnDisplaySize(i);// *2?? // rsmd.getColumnType(i); //字段类型 columnType[i-1] = rsmd.getColumnTypeName(i); //test System.out.println(columnType[i-1]+"::"+fieldLength[i-1]); }MyUtils.writeDBF_Declar(filename+".DBF", columnCount,rowCount, fieldLength, columnName, columnType);//写文件头while (rs.next()) { for (int i = 1; i <= columnCount; i++) { // 字段数据 columnData[i-1] = rs.getObject(i); } MyUtils.writeDBF_Data(filename+".DBF", columnCount, fieldLength, columnName, columnType, columnData);//一行一行写入数据}MyUtils.writeEnd();//结尾
架包以及其源码网上都可以找到,只是他是把数据一次性写入。若想从数据库里一行一行写入需稍作修改。另,其字段类型也是一个麻烦的问题。数据只支持Double。integer,float都报错,需转。 还有些小问题,如“BS”字段长度为1,Utils.textPadding(……)操作成0了,所以会有空白问题……先到这,具体问题只能继续断点跟踪了。。。
public static void writeDBF_Declar(String path, int columnCount,int rowCount, int[] fieldLength, String[] columnName, String[] columnType) { try { // 定义DBF文件字段 DBFField[] fields = new DBFField[columnCount]; for (int i = 0; i < columnCount; i++) { fields[i] = new DBFField(); fields[i].setName(columnName[i]); fields[i].setFieldLength(fieldLength[i]); //fields[i].setFieldLength(10); if (columnType[i].contains("CHAR") || columnType[i].contains("CLOB")) { fields[i].setDataType(DBFField.FIELD_TYPE_C); }else if (columnType[i].contains("DATE")) { fields[i].setDataType(DBFField.FIELD_TYPE_D); } else if (columnType[i].contains("NUMBER") || columnType[i].contains("INT") || columnType[i].contains("DECIMAL") || columnType[i].contains("REAL")) { fields[i].setDataType(DBFField.FIELD_TYPE_N); } else if(columnType[i].contains("FLOAT")){ fields[i].setDataType(DBFField.FIELD_TYPE_N); fields[i].setDecimalCount(2); }else { fields[i].setDataType(DBFField.FIELD_TYPE_M); } } writer = new DBFWriter(path); // 把字段信息写入DBFWriter实例,即定义表结构 writer.setFields(fields,rowCount); } catch (Exception e) { e.printStackTrace(); } }
public static void writeDBF_Data(String path, int columnCount, int[] fieldLength, String[] columnName, String[] columnType, Object[] columnData) throws Exception { Object[] rowData = null; rowData = new Object[columnCount]; for (int i = 0; i < columnCount; i++) { if((columnData[i]!=null)&&columnType[i].equalsIgnoreCase("int")){ int a = new Integer((Integer) columnData[i]); double temp = a; rowData[i] = temp; }else if((columnData[i]!=null)&&columnType[i].equalsIgnoreCase("float")){ float a = new Float((Float) columnData[i]); double temp = a; rowData[i] = temp; }else if((columnData[i]!=null)&&columnType[i].equalsIgnoreCase("date")){ Date a = new Date(0); a = (Date) columnData[i]; rowData[i] = a; }else{ rowData[i] = columnData[i]; } } writer.addRecord(rowData); // 写入数据 writer.write(); } public static void writeEnd(){ try { writer.writeEnd(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
0 0
- 关于Java数据库查询结果保存到DBF的小小总结^_^
- 用java实现把sql语句查询的结果集写到dbf文件中
- 在Java中将数据库查询结果保存为List<Map>类型的JavaScript数组文件
- 将mysql的查询结果保存到文件中
- 将嵌套查询结果的序号,保存到数据库的某个字段(用存储过程实现)
- java 读取 dbf数据库的dbf文件代码
- Java数据库查询结果的输出
- 保存查询结果到Excel表格中
- mysql将查询结果保存到文件
- mysql 查询结果保存到文件
- java反射机制解决数据库查询结果到Model类
- 如果将Java中从数据库查询到的结果集转换为Json数组形式
- 如何将MySQL数据库sql查询结果保存到excel文件中
- 关于在页面输入特殊符号保存到数据库后,页面查询,特殊字符可以展示到页面的问题
- Northwind数据库的查询结果绑定到gridview的问题
- C#查询数据库把结果输出到XML的例子
- JAVA解析DBF文件导入到Oracle数据库中
- java集合的小小总结
- R语言Data Frame数据框常用操作
- 今天开始做战斗,回合制战斗代码实现第一篇补充,从头开始,简单的2d回合制游戏一些文档方面的知识
- zabbix 报警机制
- 字符串匹配的KMP算法
- Tomcat请求处理过程(Tomcat源码解析五)
- 关于Java数据库查询结果保存到DBF的小小总结^_^
- button样式设置
- Spring源码学习-5.ProxyFactoryBean实现与源代码分析
- C/C++知识要点6——定义只能在堆/栈上生成对象的类
- Mac环境下svn的使用
- owncloud源码分析4--上传代码分析
- Struts2 Hello World 实例
- C#微信结合百度api获取当前用户的地理位置
- hdoj-1010-Tempter of the Bone【深搜+剪枝】