用Java动态创建ODBC数据源

      DBF导入导出系统的大体步骤就是首先上传一DBF库到Tomcat服务器一文件夹,在服务器端用Java读取字段和数据并写入到MYSQL,SQLSERVER或是ORACLE,要实现转换,首先就要把上传的DBF库创建为数据源然后用JAVA读取并写入其它关系数据库.查找了一种方法,通过Java动态创建ODBC数据源来访问DBF库.

      ①通过一个开源的操作注册表registry来修改注册表.

      ②动态创建ODBC数据源,最好首先在服务器创建一个数据源,然后通过registry来修改也行,当然也可以通过程序创建.

import com.ice.jni.registry.RegStringValue;
import com.ice.jni.registry.Registry;
import com.ice.jni.registry.RegistryKey;
public class CreateDS {
 public static void main(String[] str) {
        try {
         
              RegistryKey child = Registry.HKEY_CURRENT_USER
                      .openSubKey("Software").openSubKey("ODBC").openSubKey
("ODBC.INI").openSubKey("datasource",RegistryKey.ACCESS_ALL);//操作权限是通过RegistryKey来获取的。
         String de = "F:\\DBF";  //DBF数据的目录,其中,datasource是我第一次设置的数据源的一个注册表的名称
         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) {
    }
  }
}

      ④补充,DBF库文件名的动态获取如下.

 

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

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值