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