服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

通过java动态创建odbc数据源来访问dbf文件

【赛迪网-it技术报道】好久没有使用过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.getstrin