外语类 | 雅思 托福 四级 六级 专四专八 | 学历类 | 成考 高考 自考 考研 | 工程类 | 监理 质量 结构 安全 | 一级建造师 二级建造师 | 考试论坛
医学类 | 护士 药师 医师 外贸类 报关员 | 职业类 | 保险 司法 证券 导游 | 会计类 | 初级 中级 高级 注会 | 会计证考试 公务员考试 | 计算机类
考试动态 | 报考指南 | 公共基础 | 指导专业 | 历年真题 | 模拟试题 | 心得技巧 | 考试培训 | 考试论坛
考试中国—计算机频道网址:it.kswchina.com 这里有:计算机的各种等级和认证考试,一级,二级,三级,四级等多种等级认证的考试资料。
您现在的位置: 考试中国 >> 计算机 >> JAVA认证 >> 指导专业 >> 正文 考试网中国:www.kswchina.com
java动态创建ODBC数据源来访问DBF文件
更新时间:2008-8-27  JAVA认证考试  收藏此文  收藏"考试中国"
    好久没有使用过VFP了,记忆中似乎也只是在学校中使用过。这次出差,客户给了一大堆dbf文件,要求处理。

无奈啊,顾客就是上帝。虽然可以通过许多途径来处理,但是总想用java语言来处理。最终还是需要通过JNI来处理,不过用到了一个开元的操作注册表的registry-3.1.3,使用后,发现蛮简单的,网上已有很多资料介绍,就不多说了。

想了两种解决方法,第一种比较麻烦,但是看网上很多人问,就也总结了出来,其实就是通过java动态创建ODBC数据源来访问DBF文件,这个就需要用到registry,来修改注册表了。

其实,主要是动态创建ODBC数据源,开始很简单,可以手工设置一次数据源,当然也可以通过程序直接生成,问题都不大。下面只说怎样修改。

import com.ice.jni.registry.RegStringValue;
import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryKey;

public class TestC {
 public static void main(String[] str) {
        try {
         
              RegistryKey child = Registry.HKEY_CURRENT_USER
                      .openSubKey("Software").openSubKey("ODBC").openSubKey
("ODBC.INI").openSubKey("data_0930",RegistryKey.ACCESS_ALL);//
操作权限是通过RegistryKey来获取的。
              String de = "F:\\commony\\test\\data\\070901";  //
我的DBF数据的目录//其中,data_0930是我第一次设置的数据源的一个注册表的名称
              System.out.println(child.getStringValue("SourceDB"));
             child.setValue(new RegStringValue(child,"SourceDB",de));
              System.out.println(child.getFullName());
        } catch (Exception e) {
              e.printStackTrace();
        }
    }

}

然后就是通过,sun.jdbc.odbc.JdbcOdbcDriver来获取数据,

import java.sql.DriverManager;
import java.sql.*;
public class TestOdbc {
  public TestOdbc() {
  }
  public static void main(String[] args) {
    java.sql.Connection conn = null;
    java.sql.PreparedStatement pt = null;
    java.sql.ResultSet rs = null;
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    }
    catch (ClassNotFoundException ex1) {
    }
    try {
      conn = DriverManager.getConnection("jdbc:odbc:data_0930", "", "");
      pt = conn.prepareStatement(" select *  from test_table");
      rs = pt.executeQuery();
      while(rs.next()){
        System.out.println("==="+rs.getString(1));
        System.out.println("==="+rs.getString(2));
        System.out.println("==="+rs.getString(3));
        System.out.println("==="+rs.getString(4));
        System.out.println("==="+rs.getString(5));
      }
    }
    catch (SQLException ex) {
    }
  }
}

其实真的很简单。

其实,文件名,是可以动态获取的,一般可以通过java中的File类来获取:

import java.io.File;


public class TestD {

 public static void main(String[] args){
  File file = new File("F:\\commony\\test\\data");
  File[] df = file.listFiles();
  for(int k =0;k   if(df[k].isDirectory()){ //
因为文件夹中包含DBF文件,所以判断是文件夹,而不是文件
    System.out.println("===kkkk=="+k+"====="+df[k].getName());
   }
  }
 }
}

第一种就是这样,需要注意的是registry的使用,其实很简单的,只要把DLL文件放到classpath下就可以了。

第二种其实更简单,就是通过另一个开元的类包jdbf.jar,使用方法也很简单,网上有很多资料,可以查询。也就不多说了。

责任编辑:仰易
回全站首页      计算机考试专题--点击进入
相关文章
运用Spring DM和CXF实现WebService动态发布
Velocity中如何判断null
一个JSP程序员的成长的心得
JAVA中的反射机制详解
Firefox浏览器兼容Javascript脚本的方法
Java辅导:初学者都必须理解的几个问题
深入浅出Java多线程(2)-Swing中的EDT
深入浅出Java多线程(1)-方法join
栏目推荐
微软认证真题
· 微软认证考试:70064Windows95考生回顾
· 微软的面试题及答案(超变态但很经典
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· [MCSE真题]正确配置IP地址以排错考题
Oracle认证真题
· 八、管理信息基本概念
· CCNA最新模拟考试题
· 网络管理员6道企业实战难题
· 思科Cisco认证最新真题50道:TCP/IP
· 关于Cisco路由协议题和答案(中文)
· Cisco试题库:ccna最新真题
Linux认证真题
· LINUX的一些高级命令笔记
· 系统管理员该了解日志文件基础知识
· 对话 UNIX: 关于 inode
· 配置Linux安全日志记录服务器
· 糟糕的 Nvidia Linux 驱动
· Linux安全的log日志记录服务器
JAVA认证真题
· JAVA题库:JAVA面试题目整理
· SCJP认证套题解析之二
· SCJP认证套题解析之一
· SCJP考试题310-025(第二套)
· SCJP考试题310-025(第二套<1>)18-147
· SCJP考试题310-025(第二套<3>)51-91/
网站简介 | 服务条款 | 广告合作 | 发布优势 | 招聘人才 | 隐私保护 | 合作伙伴 | 友情链接 | 网站导航
《中华人民共和国电信与信息服务业务》信息产业 京ICP备06046971号 技术支持:嘉瑞恒通科技。
COPYRIGHT (C) 2003-2008 KSWCHINA.COM INC ◎ 考试中国 ALL RIGHTS RESERVED.