快速业务通道

通过Java动态创建ODBC数据源来访问DBF文件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

通过Java动态创建ODBC数据源来访问DBF文件

时间:2011-02-21

通过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<df.length;k++){    if(df[k].isDirectory()){     //因为文件夹中包含DBF文件,所以判断是文件夹,而不是文件     System.out.println("===kkkk=="+k+"====="+df[k].getName());    }   }  } }

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

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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号