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());    }   }  } }