Avatar billede sluppermanden Nybegynder
11. september 2003 - 08:58 Der er 21 kommentarer og
1 løsning

Hvordan for jeg kontakt til en dbase III dbf-fil i java

Jeg har et gammelt program som bruge en dBase III
Jeg er igang med at lave en opdatering til det.

Men jeg har lidt problemer med at få kontakt til dbf-filen.

Nogen der ved hvordan ?

Jeg bruger XP og vil sætte databasen op med en ODBC system-driver
Avatar billede arne_v Ekspert
11. september 2003 - 09:45 #1
ODBC driver (DBase kommer med standard ODBC driverne).

Normal JDBC connection via SUN's JDBC-ODBC bridge bør virke
fint.

Næppe super performance, men det er sikkert heller ikke
relevant med DBase III filer.
Avatar billede arne_v Ekspert
11. september 2003 - 09:45 #2
Worst case, så er .dbf fil formatet velkendt og kan nemt læses
af lidt special kode.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 09:50 #3
Men det virker ikke

SQL = select tlf_nr from c:\FFSPRG\FFS\register.dbf
java.sql.SQLException: [Microsoft][ODBC Microsoft Access-driver] Filen "c:\FFSPRG\FFS\register.mdb" kan ikke findes.

Som du kan se i fejl meddelelsen søge jeg efter register.dbf, hvor efter at den bruger en access-driver og leder efter en register.mdb.
Som den selvfølgelig ikke kan finde.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 10:29 #4
et brud stykke af koden ser således ud.

Connection conn = DriverManager.getConnection("jdbc:odbc:Register","","");
Statement stmt = conn.createStatement();
System.out.println("SQL = "+sqlUdtryk);
rs = stmt.executeQuery(sqlUdtryk);
Avatar billede arne_v Ekspert
11. september 2003 - 10:33 #5
Sådan virker ODBC ikke.

Du går ind i ODBC Manager og definerer DSN Register til at bruge
DBase driver og pege på c:\FFSPRG\FFS (hvis jeg husker rigtigt
så er en DBase database et directory og en tabel en fil).

Så laver du connection til den DSN som du allerede gør.

Og så bruger du "select tlf_nr from register" som query.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 10:38 #6
DSN bruge en ODBC-fildatakilde hvor dbf-filer ikke er inkluderet.
skal men lave en fil udfra dbf filen eller kan man gøre noget andet.
Avatar billede arne_v Ekspert
11. september 2003 - 10:41 #7
Jeg tror at du skal dele problemet op i 2 dele:

1)  få ODBC til at virke
2)  få JDBC til at virke

#1 kan f.eks. nemt testes via Access eller Excel.

Når #1 virker så bør #2 også være til at få til at virke.

Men det er helt kritisk at ODBC virker først.

Din DSN skal være sat rigtigt op.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 10:46 #8
ok, men helt precist hvordan skal fil-dsn og bruger-dsn være sat op.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 11:02 #9
Når jeg laver et dsn skal det opbygges af et directory og en index-fil (.ndx).
Men min tabellen har ikke noget index, og jeg ville gerne undgå at have et index da jeg så ville skulle opdatere index'et hvergang jeg skulle have adgang til tabellen udfra.
Avatar billede arne_v Ekspert
11. september 2003 - 11:11 #10
Du laver en user DSN og angiver directory.

Kan du ikke bare undlade at angive noget index ?
Avatar billede sluppermanden Nybegynder
11. september 2003 - 11:34 #11
Det har jeg så gjort nu

hvis jeg bruger "select tlf_nr from register" for jeg en

java.sql.SQLException: [Microsoft][ODBC Microsoft Access-driver] Microsoft Jet-databasemotoren kan ikke finde inputtabellen eller forespørgslen "register". Kontroller, at den findes, og at navnet er stavet korrekt.
Avatar billede arne_v Ekspert
11. september 2003 - 11:47 #12
Der er noget galt !

Den skriver:

[Microsoft][ODBC Microsoft Access-driver] Microsoft Jet-databasemotoren

!

Det er jo en DBase III database ikke en Access database !

Har du valgt forkert driver ?

Eller har du en System DSN med samme navn som din User DSN ?
Avatar billede arne_v Ekspert
11. september 2003 - 11:47 #13
Har du prøvet at teste den DSN udenon Java via Access eller Excel ?
Avatar billede sluppermanden Nybegynder
11. september 2003 - 11:48 #14
Jeg har slettet system dsn'et
Avatar billede sluppermanden Nybegynder
11. september 2003 - 11:50 #15
Nej, hvordan gør jeg det ?
Avatar billede arne_v Ekspert
11. september 2003 - 12:35 #16
Access:

åben database
file
get external data
link table
ODBC
vælg DSN
...
Avatar billede sluppermanden Nybegynder
11. september 2003 - 12:51 #17
Det virker fint, og nu har jeg også fundet den rigtige driver.
Nu for jeg bare en:

java.sql.SQLException: [Microsoft][ODBC dBase-driver] Indeksfilen blev ikke fundet.
Avatar billede arne_v Ekspert
11. september 2003 - 13:24 #18
Lyder godt nok meget som den vil have den indeks fil.

Jeg vil lige tænke lidt over hvordan det problem kan løses.
Avatar billede sluppermanden Nybegynder
11. september 2003 - 13:27 #19
Jeg har lige prøvet og lave en index fil men det hjalp heller ikke.
Så jeg er lidt blank i øjeblikket.
Avatar billede sluppermanden Nybegynder
17. september 2003 - 11:35 #20
Så nu virker det, jeg prøvede med nogle forskellige driver, til sidst fandt jeg en fox pro driver der virkede. Tak for hjælpen.
Der er point på vej.
Avatar billede arne_v Ekspert
17. september 2003 - 11:48 #21
Ah. Så det var FoxPro og ikke DB III.
Avatar billede sluppermanden Nybegynder
17. september 2003 - 11:54 #22
Nej, det var en dBase III. Men jeg læste et sted at der var så stor ligehed, at en fox pro driver sandsynligvis ville virke. Så jeg prøvede den da fox pro driveren var nyere end dbase driveren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester