I've been trying to access a Visual Fox Pro database from Java for a week now. I'm getting desperate because my project is in a very tied budget and timeframe. (As any other project, I guess, hahaha)
I have a .dbf
, a .cdx
and a .fpt
files. I need to be able to look for a record, extract data, and update data. I don't have a VFP licence.
I hope someone has some pointers or a working example that I can use. If the only way is buying a driver I'll be willing to consider it based on suggestions received.
This is a short description of what I have tried.
I found this xBaseJ: java objects to read and write to dBase files. But it doesn't suport CDX index files.
Also found this Example to access a dbf. But my tests show this exception: java.sql.SQLException: [Microsoft][Controlador ODBC dBase] La tabla externa no tiene el formato esperado.
I guess a translation to english of this error could be something like: java.sql.SQLException: [Microsoft][ODBC dBase Driver] External table is not in the expected format
Because of that error I think I need a newer driver. In this microsoft page say they no longer have an ODBC driver, and everybody should use OLE DB Provider. The problem is I haven't found a way to use it from java.
As far as I can tell, there is no way to do it directly. Found here someone talking about a JACOB "thingy", and someone comments about the need to create a C++ or C# "something" to be able to do what I need. I think he is talking about The JACOB Project: A JAva-COM Bridge. But I also don't know what COM calls would actually have to make.
Haven't been able to find a suitable JDBC driver.
Thank you all.
Ely.
I found the way to do it.
I ended up using JACOB (from here).
- Downloaded and installed Visual FoxPro OLE DB driver from http://msdn.microsoft.com/en-US/vfoxpro/bb190232. the direct link is: Microsoft OLE DB Provider for Visual FoxPro 9.0 SP2
- Downloaded JACOB version 1.17 binary and source code.
- Added
jacob.jar
as a Java Build Path library - Copied
jacob-1.17-x86.dll
to the project directory (same place as eclipse's .project file) - Copied
jacob-1.17_src\jacob-1.17\samples\com\jacob\samples\ado
contents to my src directory and:- Removed the
ms
directory - renamed
test.java
toMain.java
- Changed the connection string to:
String connectStr = "Provider=vfpoledb;Data Source=C:\\path\\to\\Data\\;Collating Sequence=general;";
- Changed the queryStr to match one of the dbf's name
- Removed the
Hope this helps someone else.
You may find interesting to use a jdbc driver for foxpro files. I made some quick tests with this one, and it almost looks like you are using a real database in Java.
Regards,
来源:https://stackoverflow.com/questions/21856285/access-visual-foxpro-database-from-java