程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 通過Java動態創建ODBC數據源來訪問DBF文件

通過Java動態創建ODBC數據源來訪問DBF文件

編輯:關於JAVA

通過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,使用方法也很簡單,網上有很多資料,可以查詢。也就不多說了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved