日期:2014-05-16  浏览次数:20430 次

java通过jdbc-odbc访问dbf数据源

dbf这个东西太老了,以至于老的资料都不好找,既不安全也不稳定,想不明白交易所怎么会拿这样的数据来做数据格式。

一般可以通过odbc直接访问access那样去访问dbf,但是通过java的话可以用jdbc-odbc来访问。废话不多说。下面是步骤和代码:

1.现在windows平台上面建立一个dbf数据源,我的dbf文件的路径是 d:\dbfTest\test.dbf

在“管理工具”--->“数据源”建立一个dbf的数据源,在用户dsn上建立一个dbf的数据源(我不知道这个数据源是否影响程序的读取数据,默认的系统已经给你建好了几个常见的数据源,例如access的mdb,excel的 xsl,以及dbf)

2.下面是代码和截图

package org.loozer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBFJdbcOdbcTest {

?public static void main(String args[])
?{
??Connection conn=null;
??PreparedStatement pstm=null;
??ResultSet rs=null;
??
??String url="jdbc:odbc:Driver={Microsoft dBASE Driver (*.dbf)};DBQ=d:\\dbfTest";
??
??try {
???Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
???
???try {
????conn=DriverManager.getConnection(url);
???????
?????
????pstm=conn.prepareStatement("select * from test");
????
????rs=pstm.executeQuery();
????
???} catch (SQLException e) {
????// TODO Auto-generated catch block
????e.printStackTrace();
???}
??} catch (ClassNotFoundException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??
??try {
???while(rs.next())
????{
????System.out.println(rs.getString(1));
????
????}
??} catch (SQLException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??
?}
?
}

来源:http://blog.163.com/cantata_convedia/blog/static/3995366720081125114953503/

1 楼 shgaoyuhai 2011-11-28  
请问一下,如果dbf文件里有删除标示的语句是隐藏的,直接执行sql是查不出来的,该怎么办?