什么是最好的Java开源DBF驱动程序?

20

请问有哪些最好的开源odbc:jdbc驱动程序可用于读取/写入dbf文件呢?我有一个dbf文件,希望通过Web应用程序(Tomcat app)进行查询(选择/更新)。

希望能得到任何帮助和提示。

谢谢。


相关链接:https://dev59.com/EEzSa4cB1Zd3GeqPiwbr - HMM
https://github.com/jamel/dbf - Frankie Drake
3个回答

16
try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String connString="jdbc:odbc:Driver={Microsoft dBASE Driver (*.dbf)};DefaultDir=E:\\db";//DeafultDir indicates the location of the db
            Connection connection=DriverManager.getConnection(connString);
            String sql="SELECT * FROM table_name where condition";// usual sql query
            Statement stmt=connection.createStatement();
            ResultSet resultSet=stmt.executeQuery(sql);
            while(resultSet.next())
            {
                System.out.println();
            }
            System.out.println();
        }
        catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }

它有效。我想不需要探索其他(开放/封闭)API,因为Java提供了一种优秀的方式来读写dbf。

谢谢大家。


1
你能告诉我如何使用这个驱动禁用自动提交吗?因为使用 connection.setAutoCommit(false) 方法会抛出 java.sql.SQLException: [Microsoft][ODBC dBase Driver]Optional feature not implemented 错误。 - Boro
1
@XCoder,您能否说明一下,在64位机器上运行它是否需要特殊的配置步骤?我在这里遇到问题了,当我在Win7 64位上使用驱动程序时,它只是返回SQLException,并显示以下消息:[Microsoft][ODBC驱动程序管理器]找不到数据源名称并且未指定默认驱动程序,但在我旧的32位机器上所有东西都正常工作。 - Boro
这对我没用。我试图访问一个Visual FoxPro数据库。我设法做到了,并发布了如何做到这一点 - elysch
4
JDBC ODBC桥现已被弃用,并将在JDK 8中被移除。 - Alan B
缺点:此代码仅限于Windows,不可移植到其他平台。适用于快速编写或已具有Windows依赖项的情况,但对于其他目的,其他答案中建议的库可能是更好的选择。 - user149408
显示剩余3条评论

13

你可以尝试使用 https://github.com/iryndin/jdbf 这个简单的Java库来读写DBF文件。

我是这个库的作者,在我的生产应用中它表现得非常好。

它非常简单易用,欢迎尝试。


非常好用。谢谢。 - allancth
1
您们这个优秀工具的许可政策是什么? - Andremoniy
@Andremoniy,项目页面上没有指定许可证,对吧。我正在考虑使用Apache 2.0许可证或其他允许收费商业使用的许可证。也许Apache 2.0许可证会胜出。 - iryndin
1
谢谢!适用于FireBird DBFS。 - gooogenot
1
干得好!非常感谢你! - Андрей Москвичёв
显示剩余3条评论

3

dans-dbf是访问dbf文件的好选择,但它有自定义的API(即不是SQL)。

我建议您将dbf文件转储到数据库表中(使用mysql和myisam引擎就可以了,如果需要交易/一致性检查,则使用innodb)。

然后您可以根据需要再转储回dbf文件。


根据手头数据的大小,我更倾向于使用内存中的Java数据库,例如hsqldb或h2,并编写一个小包装器,使用dans-dbf。 - VH-NZZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接