服务热线:13616026886

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

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

应用java程序动态创建odbc数据源的实例

通过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,使用方法也很简单,网上有很多资料,可以查询。也就不多说了。

扫描关注微信公众号