JavaによるODBCデータソースの動的作成
DBF導入導出システムの大まかな手順は、まずDBFライブラリをTomcatサーバのフォルダにアップロードし、サーバ側でJavaでフィールドとデータを読み取りMYSQL、SQLSERVERまたはORACLEに書き込むことである.変換を実現するには、まずアップロードしたDBFライブラリをデータソースとして作成し、JAVAで他の関係データベースを読み取り、書き込む.Javaにより動的にODBCデータソースを作成するDBFライブラリにアクセスする.
①オープンソースの操作レジストリregistryによりレジストリを変更する.
②動的にODBCデータソースを作成するには、まずサーバにデータソースを作成してからregistryで変更してもよいし、もちろんプログラムで作成してもよい.
③そしてsun.jdbc.odbc.JdbcOdbcDriverによりデータを取得することができる.
④補足、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());
}
}
}
}