[java] Connecteren met een db3 database file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Gegroet,

Wij hebben hier op bedrijf een toestel met een datalogger, de data die die datalogger logt steekt ie in een db3 database file.

Nu is mij gevraagd een applicatie in java te schrijven om deze data uit te lezen uit de db3 file, een aantal bewerkingen doen en deze over te zetten naar een mysql database die online staat voor een website.

Ik ben me al suf aan het zoeken geweest op google maar ik vind niets over het maken van een connectie met een db3 file :s
Converteren is geen optie want het zou een applicatie moeten zijn die een aantal maanden draait waarbij de gegevens om de 10 minuten moeten verwerkt worden. Als ik de file zou converteren zou deze elke 10 minuten ook automatisch geconverteerd moeten worden nadat de nieuwe data toegevoegd is aangezien de datalogger blijft opslaan in de bd3 file, iets waar ik niets aan kan doen want dat is een aangekocht toestel.

Heeft dus iemand een idee hoe ik kan verbinden met een db3 file zodat ik de data kan uitlezen in mijn java applicatie?

Just me


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Spreken we hier van een Berkeley DB? Zoja dan heb je misschien meer aan deze link: http://www.oracle.com/database/berkeley-db/index.html

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

Connectie met een file maken is natuurlijk nogal onzin. Als je dus op zoek bent naar 'verbinden met een file' dan kun je lang door blijven zoeken. Een file open je en lees je uit (of je schrijft er iets in weg). Als je daadwerkelijk 'verbinding' wilt maken dan heb je eerder een database server nodig.

Wat jij eerst eens even moet doen is uitzoeken om wat voor formaat het uberhaupt gaat. db3 zegt niet zo heel veel. Ik kan al zo 2 verschillende database applicaties vinden die hun data met een dergelijke extentie wegschrijven.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Connectie maken met een file is imo geen onzin. SQL Compact databases werken ook zo. De engine zit gewoon in een dll verstopt. Dus...

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
wel de file heeft de extensie db3 en dit is het enige nuttige dat ik eruit kan halen
Afbeeldingslocatie: http://i61.photobucket.com/albums/h66/galen_nick/db3.png

Dus ik heb geen flauw idee welk type bestand het effectief is, als je mij kan zeggen hoe ik dit uit kan vinden dan wil ik dat gerust doen.

Just me


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

Dan maak je geen 'connectie' met de file, maar met de dll. Hsqldb en sqlite werken ook zo.


@Galen:

Begin met uitzoeken welke database toepassingen deze extentie gebruik(t)en. Vervolgens gaan kijken of je een indeling van het bestandsformaat ergens kan achterhalen. Vervolgens in het db3 bestand kijken of dit met 1 van die indelingen matcht en zo weet je welke het waarschijnlijk zou kunnen zijn.

En dan moet je eigenlijk nog wel hopen dat ze voor de datalogger neit gewoon een eigen formaatje bedacht hebben.

Heb je het db3 bestand al een keer geopend om te kijken wat er instaat? Misschien is het wel gewoon comma separated of fixed position.

[ Voor 75% gewijzigd door Janoz op 01-06-2010 09:36 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
ik heb het eens geopend met de firefox plugin SQLite manager, en het blijkt toch een of andere vorm van database file te zijn.
Er staan 3 tabellen in gevuld wet waardes.
Ik heb het ook eens geopend met notepad++ en daar krijg ik een hele warboel aan tekens die me niet direct een herkenningspunt bieden.

edit: na nog wat prutsen denk ik dat het om dBase III file, ik heb bij systeembeheer in de Gegevensbronnen (ODBC) een Gebruikers-DSN gemaakt en via deze verbind ik met de database momenteel.

Een eerste test lijkt te werken, nu hopen dat alles erop zal werken :)

[ Voor 30% gewijzigd door Dorgaldir op 01-06-2010 10:26 ]

Just me


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Ik zou zeggen, kijk eens wat je kunt met de sleutelwoorden die je al hebt: java en sqlite. Dan zul je al snel zien dat daar al bestaande libraries voor bestaan om dit soort databases uit te lezen. Let wel op dat SQLite een simpele set van commando's heeft tegenover andere databases zoals PostgreSQL of MySQL (daarom ook 'lite').

SQLiteJDBC: http://www.zentus.com/sqlitejdbc/
SQLite documentatie: http://www.sqlite.org/lang.html

Bij SQLite databases maak je inderdaad een connectie naar een bestand. :Y)

Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Ik heb een datamanager classe gemaakt, deze verbind met de database, en als ik het gewoon test lukt het wel.
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 public void connect() {
        try {
            System.out.println("connectie openen ...");
            con = DriverManager.getConnection("jdbc:odbc:details");
            System.out.println("connectie is open ...");
        } catch (SQLException sqle) {
            for (Throwable t : sqle) {
                t.printStackTrace();
            }
        }
    }
    //methode closeConnection
    public void closeConnection() {
        try {
            if (con != null) {
                System.out.println("connectie sluiten ...");
                con.close();
                System.out.println("connectie is gesloten ...");
            }
        } catch (SQLException sqle) {
            for (Throwable t : sqle) {
                t.printStackTrace();
            }
        }
    }

    public static void main(String[] args){
        Datamanager dm = new Datamanager();
        dm.connect();
        dm.closeConnection();

    }


Dit geeft mooi als output:
code:
1
2
3
4
connectie openen ...
connectie is open ...
connectie sluiten ...
connectie is gesloten ...


en dan heb ik een methode met een sql statement
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public  ArrayList<String> findAllOmvormers() {
        Statement st = null;
        ResultSet rs = null;
        ArrayList<String> list = new ArrayList<String>();
        try {
            //connectie aanmaken
            this.connect();
            //statement-object aanmaken
            st = con.createStatement();
            //statement uitvoeren
            rs = st.executeQuery("SELECT * " +
                    "FROM data_items");
 
            //verwerking van de gegevens
            while (rs.next()) {
                list.add(rs.getString("serialnumber"));
            }
            rs.close();
            st.close();
            return list;
        } catch (SQLException sqle) {
            for (Throwable t : sqle) {
               t.printStackTrace();
            }
        } finally {
            this.closeConnection();
        }
        return list;
    }


geeft als output:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
connectie openen ...
connectie is open ...
connectie sluiten ...
java.sql.SQLException: [Microsoft][ODBC dBase-stuurprogramma] De Microsoft Jet-database-engine kan het object data_items niet vinden. Zorg ervoor dat het object bestaat en dat u de naam en het pad correct heeft gespeld.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
        at twinbeachhouse.Datamanager.findAllOmvormers(Datamanager.java:77)
        at twinbeachhouse.Main.<init>(Main.java:47)
        at twinbeachhouse.Main.main(Main.java:74)
connectie is gesloten ...


de tabel noemt echt wel data_items, dus ik heb geen idee waarom hij het object niet kan vinden :s

Just me


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

En dat je in je foutmelding "[Microsoft][ODBC dBase-stuurprogramma]" ziet staan terwijl je eerder uitgevogeld had dat het om een sqlite database ging doet je geen belletje rinkelen?

Ga de links van Feanathiel maar weer eens eventjes doorlezen....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Janoz schreef op dinsdag 01 juni 2010 @ 12:05:
En dat je in je foutmelding "[Microsoft][ODBC dBase-stuurprogramma]" ziet staan terwijl je eerder uitgevogeld had dat het om een sqlite database ging doet je geen belletje rinkelen?

Ga de links van Feanathiel maar weer eens eventjes doorlezen....
ookal aan gedacht, maar waarom geeft hij dan geen fout als ik gewoon de verbinding test? dan zou hij toch ook een fout moeten geven, of zie ik dat fout?

Just me


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

@hierboven:
Java -> odbc -> sqlite, kan natuurlijk wel. Dat ligt maar net aan de instellingen...

Kijk eens welke tabellen je wel kunt gebruiken? SQLite heeft hier, bij mijn weten, geen 'show databases/tables' voor. Wat wel kan is:

code:
1
SELECT * FROM dbname.sqlite_master WHERE type='table';


Referentie:
- http://stackoverflow.com/...in-a-sqlite-database-file

Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Feanathiel schreef op dinsdag 01 juni 2010 @ 12:08:
@hierboven:
Java -> odbc -> sqlite, kan natuurlijk wel. Dat ligt maar net aan de instellingen...

Kijk eens welke tabellen je wel kunt gebruiken? SQLite heeft hier, bij mijn weten, geen 'show databases/tables' voor. Wat wel kan is:

code:
1
SELECT * FROM dbname.sqlite_master WHERE type='table';


Referentie:
- http://stackoverflow.com/...in-a-sqlite-database-file
krijg ik deze melding :p

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
connectie openen ...
connectie is open ...
java.sql.SQLException: [Microsoft][ODBC dBase-stuurprogramma] De Microsoft Jet-database-engine kan het object details.sqlite_master niet vinden. Zorg ervoor dat het object bestaat en dat u de naam en het pad correct heeft gespeld.
connectie sluiten ...
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
        at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
        at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
        at twinbeachhouse.Datamanager.findAllTables(Datamanager.java:107)
        at twinbeachhouse.Main.<init>(Main.java:53)
        at twinbeachhouse.Main.main(Main.java:80)
connectie is gesloten ...

Just me


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-06 11:51

Janoz

Moderator Devschuur®

!litemod

Feanathiel schreef op dinsdag 01 juni 2010 @ 12:08:
@hierboven:
Java -> odbc -> sqlite, kan natuurlijk wel. Dat ligt maar net aan de instellingen...
Het kan, maar die instelling is er niet zomaar en gezien de tot nu toe ondernomen stappen van de TS vermoed ik niet dat hij zelf al een odbc koppeling naar sqlite opgezet heeft. Ik vermoed dat het toevallig goed gaat omdat er toevallig wel 1 of andere odbc datasource gedefinieerd is. En dat terwijl er in de door jou aangehaalde link een letterrlijk voorbeeld zit om met sqlite te verbinden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
@Janoz
dat was inderdaad het geval en nu heb ik heel die klasse weggesmeten en een nieuwe begonnen specifiek voor sqlite en momenteel werkt alles zeer vlotjes :)

Just me


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 25-06 15:42
De melding "De Microsoft Jet-database-engine" doet vermoeden dat je een Access (Jet is engine in MS Access) driver gebruikt om die SQLite (of wat het dan ook mag zijn) database file te openen.

Edit: net te laat :(

[ Voor 5% gewijzigd door Hydra op 01-06-2010 13:57 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 15:14
Ehm... volgens de TS zelf is het een dBase III file, vanwaar dan dat geroep om SQLite?
Galen schreef op dinsdag 01 juni 2010 @ 09:40:
edit: na nog wat prutsen denk ik dat het om dBase III file, ik heb bij systeembeheer in de Gegevensbronnen (ODBC) een Gebruikers-DSN gemaakt en via deze verbind ik met de database momenteel.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 26-06 04:53

Gerco

Professional Newbie

darkmage schreef op dinsdag 01 juni 2010 @ 13:57:
Ehm... volgens de TS zelf is het een dBase III file, vanwaar dan dat geroep om SQLite?
Hierom (relevante deel heb ik vet gemaakt):
Galen schreef op dinsdag 01 juni 2010 @ 09:40:
ik heb het eens geopend met de firefox plugin SQLite manager, en het blijkt toch een of andere vorm van database file te zijn.
Er staan 3 tabellen in gevuld wet waardes.
Wanneer sqlite manager de file kan lezen en tabellen met waardes kan zien is het een sqlite file, ongeacht wat de TS zelf denkt.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Gerco schreef op dinsdag 01 juni 2010 @ 13:59:
[...]

Hierom (relevante deel heb ik vet gemaakt):

[...]


Wanneer sqlite manager de file kan lezen en tabellen met waardes kan zien is het een sqlite file, ongeacht wat de TS zelf denkt.
het enige vreemde is dan dat ik bij het zoeken nergens iets vind van SQLite en enkel van dBase III, ik heb het gewoon eens getest met de sqlite manager en dit bleek te werken

Just me


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 26-06 04:53

Gerco

Professional Newbie

Galen schreef op dinsdag 01 juni 2010 @ 14:07:
het enige vreemde is dan dat ik bij het zoeken nergens iets vind van SQLite en enkel van dBase III, ik heb het gewoon eens getest met de sqlite manager en dit bleek te werken
Het maakt sqlite niet uit hoe de file heet, veel sqlite files heten gewoon .dat of .db. Dit is waarschijnlijk een sqlite3 file, vandaar .db3.

Als het werkt met sqlite manager is het sqlite. Een "database file" bestaat niet als algemene definitie dus als die file gelezen kan worden door een sqlite applicatie weet je genoeg. Elke andere db applicatie zal er dan helemaal niets mee kunnen (ook geen tabelnamen laten zien).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 25-06 15:42
Gerco schreef op dinsdag 01 juni 2010 @ 14:09:
Als het werkt met sqlite manager is het sqlite. Een "database file" bestaat niet als algemene definitie dus als die file gelezen kan worden door een sqlite applicatie weet je genoeg. Elke andere db applicatie zal er dan helemaal niets mee kunnen (ook geen tabelnamen laten zien).
Nouja, als SQLite een .mdb file zou kunnen lezen zou een Access DB niet opeens een SQLite DB zijn natuurlijk ;)

https://niels.nu

Pagina: 1