public Map<String, Object> getResultSet(
String sql) {
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
try {
DataSource dataSource = jdbcTemplate.getDataSource();
connection = dataSource.getConnection();
statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = statement.executeQuery(sql);
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
String[] strutName = new String[columnCount]; // 列名称
byte[] strutType = new byte[columnCount]; // 列类型
int[] structLength = new int[columnCount];// 列长度
rs.last();// the last row in this ResultSet object
int itemCount = rs.getRow();
rs.beforeFirst();// just before the first row
Object[][] data = new Object[itemCount][columnCount];
for (int i = 1; i <= columnCount; i++) {
strutType[i - 1] = DBFField.FIELD_TYPE_C; // string类型
strutName[i - 1] = meta.getColumnName(i); // 列名
}
int i = 0;
while (rs.next()) {
for (int j = 0; j < columnCount; j++) {
Object da = null;
try {
if (rs.getObject(j + 1) != null) {
da = new String(rs.getObject(j + 1).toString().getBytes("GBK"), "ISO-8859-1");
}
if (da == null) {
structLength[j] = 1;
} else {
structLength[j] = ((String) da).length();
}
} catch (UnsupportedEncodingException e) {
if (logger.isDebugEnabled()) {
logger.debug(e.getMessage(), e);
}
throw new DataAccessFailureException(ErrorCodes.ERRORCODES_SYSTEM_ERROR.getStrVlue());
}
data[i][j] = da;
}
i++;
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("strutTypeArray", strutType);
map.put("strutNameArray", strutName);
// 导出DBF时,名字和性别长度分别为20和4
if (strutName.length > 2) {
if (structLength.length > 1 && strutName[1].equals("NAME")) {
structLength[1] = 20;
}
if (structLength.length > 2 && strutName[2].equals("XB")) {
structLength[2] = 4;
}
if (structLength.length > 12 && strutName[12].equals("KCBH")) {
structLength[12] = 5;
}
if (structLength.length > 13 && strutName[13].equals("ZWH")) {
structLength[13] = 5;
}
if (structLength.length > 14 && strutName[14].equals("KH")) {
structLength[14] = 20;
}
if (structLength.length > 15 && strutName[15].equals("XLDM")) {
structLength[15] = 5;
}
if (structLength.length > 16 && strutName[16].equals("SXZY")) {
structLength[16] = 30;
}
if (structLength.length > 17 && strutName[17].equals("WJHQK")) {
structLength[17] = 5;
}
if (structLength.length > 18 && strutName[18].equals("SS")) {
structLength[18] = 5;
}
if (structLength.length > 19 && strutName[19].equals("KMDM")) {
structLength[19] = 5;
}
if (structLength.length > 5 && strutName[5].equals("ZYDM")) {
structLength[5] = 10;
}
if (structLength.length > 6 && strutName[6].equals("BKDW")) {
structLength[6] = 100;
}
if (structLength.length > 7 && strutName[7].equals("ZWDM")) {
structLength[7] = 10;
}
if (structLength.length > 8 && strutName[8].equals("JBDM")) {
structLength[8] = 10;
}
if (structLength.length > 9 && strutName[9].equals("KD")) {
structLength[9] = 10;
}
if (structLength.length > 10 && strutName[10].equals("BMD")) {
structLength[10] = 5;
}
if (structLength.length > 11 && strutName[11].equals("KQ")) {
structLength[11] = 5;
}
}
map.put("structLengthArray", structLength);
map.put("data", data);
return map;
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug(e.getMessage(), e);
}
throw new DataAccessFailureException(ErrorCodes.ERRORCODES_SYSTEM_ERROR.getStrVlue());
} finally {
try {
if (rs != null) {
rs.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
if (logger.isDebugEnabled()) {
logger.debug(e.getMessage(), e);
}
throw new DataAccessFailureException(ErrorCodes.ERRORCODES_SYSTEM_ERROR.getStrVlue());
}
}
分享到:
相关推荐
Java操作DBF文件是数据库处理中的一个特殊场景,DBF是一种常见的数据库文件格式,常见于FoxPro、dBase等早期数据库管理系统中。在Java中处理DBF文件,主要是为了兼容这些旧系统的数据或者进行特定的数据交换。下面...
通过java操作dbf文件的javadbf,含源码,api
Java操作DBF文件的API是Java开发者用于读取和写入DBF(dBase文件格式)数据的重要工具。DBF是一种常见的数据库文件格式,广泛应用于早期的桌面数据库系统,如dBase、FoxPro等。在Java中处理这些文件通常需要第三方库...
Java操作DBF,通常指的是在Java程序中处理DBF文件,这是一种常见的数据库文件格式,主要由FoxPro、Visual FoxPro等数据库系统创建。DBF文件主要用于存储结构化的数据,包括表格、字段和记录。在Java中,我们可以通过...
Java 解析 DBF 文件方案 Java 解析 DBF 文件方案是使用 Java 语言来读取和解析 DBF 文件的方法。DBF 文件是一种常见的数据库文件格式,广泛应用于许多行业。为了读取和解析 DBF 文件,需要使用 Java 语言中的数据库...
一个类搞定 dbf文件读取,方便又卫生,老少皆宜
本文将深入探讨如何使用Java来快速导出大量数据到DBF文件,以及如何利用`javadbf.jar`库进行高效操作。 首先,DBF文件是基于dBase III、IV或FoxPro等早期数据库管理系统的文件格式。它以ASCII文本存储表格数据,...
使用 Java 实现对 dbf 文件的简单读写 Java 是一种广泛使用的编程语言,对于读写 dbf 文件具有重要的应用价值。本文将介绍使用 Java 实现对 dbf 文件的简单读写,包括读写 dbf 文件的基本步骤、相关类的介绍、代码...
打包文件路径 : dbf4j\artifacts\dbf4j_jar java -jar dbf4j.jar test.xml 20190416 test.xml 是配置文件,20190416是日期参数
这种方式利用了Java JDBC技术,通过安装特定的驱动程序,可以将DBF文件视为一个数据库表,并使用标准SQL语句对其进行查询和操作。这种方法的优势在于可以利用现有的SQL技能进行数据处理,同时也支持更复杂的查询和...
JavaDBF库为开发者提供了方便的API,可以轻松地操作这些文件,无需了解底层的二进制格式细节。 1. DBF文件结构 DBF文件由表头、字段定义和记录数据组成。表头包含了文件的基本信息,如创建日期、记录数量、字符...
在Java中处理DBF文件,我们可以借助特定的库,如JDBF,它提供了读取和写入DBF文件的功能。本篇文章将深入探讨如何使用Java实现DBF文件的读取与创建。 1. **DBF文件格式介绍** DBF文件格式源于dBase,是早期个人...
2. **JDBF**:这是一个Java库,用于读取和写入FoxPro数据库文件(.dbf)。它提供了类似操作SQL数据库的API,使得开发者可以轻松地与FoxPro数据进行交互。 3. **Oracle JDBC驱动(ojdbc)**:Oracle JDBC驱动是Java...
`dbf-jdbc-wisecoders`是一个Java库,它提供了对DBF文件的读写功能,使得开发者能够通过Java语言方便地操作这些文件。 这个工具包的主要特点和功能包括: 1. **JDBC接口**:`dbf-jdbc-wisecoders`通过提供一个类似...
`javadbf.jar`是一个Java库,专门用于读取和操作DBF文件。在Java中,由于标准库并不直接支持DBF格式,所以需要依赖这样的第三方库来扩展功能。在实际应用中,我们首先需要将`javadbf.jar`添加到项目的类路径中,确保...
在Java中,没有内置的库直接支持DBF文件处理,但有第三方库如JDBF可以方便地进行读取操作。JDBF是一个轻量级的Java库,专门用于处理DBF文件。 3. 使用JDBF读取DBF步骤: a) 引入依赖:首先,你需要在项目中引入...
在Java中,通常使用JDBC(Java Database Connectivity)来连接和操作数据库,但对于非标准的数据库格式如DBF,就需要依赖像javadbf.jar这样的第三方库。使用此类库时,开发者需要注意以下几点: 1. 引入库:首先,...
在"系统DSN"中找到刚安装驱动后增加的项"Microsoft visual foxpro Driver",双击编辑出现如图2: 图2 3、java连接ODBC private String url = "jdbc:odbc:VF";//这里连接的是student数据源配置的java语句 ...