Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Allgemeine Themen rund um NetBeans

Moderator: wegus

kuehni
Beiträge: 3
Registriert: 05.05.2014, 14:16

Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon kuehni » 05.05.2014, 14:27

Hallo Leute,

ich soll eine Accessdatenbank mithilfe eines kleinen Javaprogramms auslesen. Leider komm ich nicht einmal zum programmieren, da mir die Einbindung der JDBC-ODBC-Bridge nicht gelingt. Ich lese immer nur wieder von Treibern und installiere sie fleisig. Aber immer wieder gibt es nur Fehlermeldungen. So richtig sehe ich in dem Thema nicht durch :oops: .
Kann mir jemand weiter helfen eine Datenbank mit Java auszulesen, wobei die Accessdatenbank aufgrund der benutzerfreundlichkeit zu bevorzugen ist?

Für eure Hilfe schon mal vielen Dank!

ebaumann
Beiträge: 284
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon ebaumann » 06.05.2014, 07:25

kuehni hat geschrieben:So richtig sehe ich in dem Thema nicht durch :oops: .


Es ist zu empfehlen, vor dem Programmieren zumindest den Java Tutorial-Abschnitt über JDBC durchzuarbeiten: http://docs.oracle.com/javase/tutorial/jdbc/index.html

kuehni hat geschrieben:Kann mir jemand weiter helfen eine Datenbank mit Java auszulesen, wobei die Accessdatenbank aufgrund der benutzerfreundlichkeit zu bevorzugen ist?


Falls es keine Access-Datenbank sein muss, würde ich diese nicht benutzen, unter Java gibt es bessere Alternativen wie beispielsweise Derby, HSQL oder Treiber für "richtige" Datenbanken wie PostgreSQL. Falls die Benutzer mit einem Frontend die Datenbank bearbeiten müssen und unbedingt MS-Access benutzen wollen, gibt es mindestens zwei Möglichkeiten: Einen ODBC-Treiber zu installieren und über die JDBC-ODBC-Bridge diesen via JDBC zu benutzen. Der von Microsoft kostenlos zur Verfügung gestellte Access-ODBC-Treiber kann nur unter 32 Bit betrieben werden, erfordert also die 32 Bit-Java-Variante. Als vermutlich bessere Alternative kommt Jackcess in Frage. Dann kann eine Access-DB nicht nur unter Windows mit installiertem ODBC (oder Unix-Systemen mit nicht unbedingt billigem Access-ODBC-Treiber) ausgelesen werden, sondern überall, wo Java benutzt werden kann.

kuehni
Beiträge: 3
Registriert: 05.05.2014, 14:16

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon kuehni » 07.05.2014, 06:58

Danke für die super Antwort!
Ich arbeite gerade das Tutorial durch. Echt hilfreich!
Mir ist schon aufgefallen, dass es unter den Javaprogrammierern eher eine ablehnende Haltung gegenüber Access gibt.
Woran liegt das? Access an sich ist ja ziemlich bedienerfreundlich.

Viele Güße und vielen Dank
Der kuehni

Benutzeravatar
wegus
Beiträge: 458
Registriert: 26.09.2006, 09:07

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon wegus » 07.05.2014, 07:08

Access war mal eine sehr schlechte Datenbank die nur wegen Ihrer guten GUI überhaupt Verwendung fand. Die heutige JET-Engine ist besser als ihr Ruf, aber ich meine Access ist noch immer ein Singleuser-System oder liege ich da falsch? Zudem ist Java ja nun zum großen Teil OS Unabhängig während Access nur auf Betriebssystemen läuft, die ich z.B. gar nicht verwende.
Wenn etwas zu einfach klingt um wahr zu sein, dann ist es oft auch nicht wahr!

ebaumann
Beiträge: 284
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon ebaumann » 07.05.2014, 07:34

kuehni hat geschrieben:Mir ist schon aufgefallen, dass es unter den Javaprogrammierern eher eine ablehnende Haltung gegenüber Access gibt.
Woran liegt das?


Das Programm Microsoft Access ist ein Frontend für prinzipiell beliebige (relationale) Datenbanken. Das Access-Datenbankformat ("MDB-Dateien") sollte davon getrennt betrachtet werden, es ist sozusagen das "Hausformat", das Access benutzt, falls es nicht z.B. über ODBC mit einer anderen Datenbank verbunden wird, beispielsweise dem Microsoft SQL-Server.

Weder das Access-Frontend noch das Access-Datenbankformat lässt sich pauschal bewerten (abwerten), es hängt ab von den Umständen, wann es sich besser eignet als eine andere Lösung. Vielleicht ist eine innerhalb Access programmierte Anwendung für deinen Fall die beste Lösung, allerdings würde ich auf deren Zukunftstauglichkeit nicht wetten (ich habe Access nicht weiter verfolgt, aber ich weiß, dass beispielsweise mit Access 1997 programmierte Anwendungen bereits nicht mehr liefen unter Access, das um 2000 vertrieben wurde, abgesehen davon, dass Access weder kostenlos ist noch unter anderen Betriebssystemen benutzt werden kann). Eine Java-Datenbankanwendung ist dank JDBC oder JPQL (z.B. Hibernate) ohnehin nicht an ein Format gebunden, solange keine Datenbank-spezifischen Befehle ausgeführt werden. Das heißt, im Idealfall (Normalfall) sollte die Anwendung ebenso mit PostgreSQL benutzt werden können wie mit MySQL oder Derby etc., ohne eine Code-Zeile zu ändern - falls richtig programmiert, müssen lediglich zwei bis drei Zeilen in einer Properties-Datei angepasst werden, damit z.B. heute eine MySQL-Datenbank benutzt wird und morgen eine Derby-Datenbank.

Damit das funktioniert, ist die Abstraktion via JDBC oder JPQL erforderlich und bei Access damit ein Access-ODBC-Treiber. Letzterer ist ein Problem, da auf Nicht-Windows-Systemen eher nicht existent und auf Windows-Systemen nicht zwangsweise existent und falls doch, ist es meist der Microsoft-Treiber, der dazu zwingt, eine 32 Bit-JRE zu benutzen. Das heißt, ob ein Java-Programm läuft, dass die JDBC-ODBC-Bridge mit einem Access-Treiber benutzt, ist nicht gewährleistet. Mit Jackcess geht das zwar, aber dann hat man nicht die Möglichkeit, ohne (umfangreiche) Code-Anpassung eine andere Datenbank zu benutzen.

Da benutze ich lieber beispielsweise Derby oder HSQLDB etc. Dann kann ich nicht nur ohne Probleme parallel eine eingebettete Datenbank benutzen, sondern bei Bedarf eine Serverdatenbank (Derby oder HSQLDB laufen in beiden Modi). Bei Problemen kann ich, sofern erforderlich, im Quellcode der Datenbank debuggen (war nie erforderlich). Außerdem sind die Fehlermeldungen beider Datenbanken nach meinen Erfahrungen um Welten besser als jene des Microsoft Access-ODBC-Treibers, helfen also praktisch immer, Fehler zu finden und zu beheben, während ich beim Access-ODBC-Treiber schon Meldungen sah, die weder etwas über den Fehler aussagten noch irgendwie darauf schließen ließen.

Der einzige gute Grund, eine Java-Anwendung auf das Access-Datenbankformat aufzubauen ist, dass schon eine Datenbank in diesem Format existiert und diese auch außerhalb der Java-Anwendung weiter benutzt wird, beispielsweise mit dem Access-Frontend. In allen anderen Fällen bringt mir das nur Nachteile und Mehrarbeit. Java-Datenbanken wie Derby oder HSQLDB lassen sich auch mit der Libre Office-Datenbankanwendung öffnen (das nicht so gut ist wie Access, aber zum Durchschauen der Tabellen ist es geeignet. Allerdings kann ich das auch direkt in NetBeans).

ebaumann
Beiträge: 284
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon ebaumann » 07.05.2014, 07:45

wegus hat geschrieben:ich meine Access ist noch immer ein Singleuser-System oder liege ich da falsch?


Über den Microsoft ODBC-Treiber können mehrere Benutzer eine Access-Datenbank-Datei gleichzeitig benutzen. Das ist allerdings ziemlich "gruselig", da im Dateisystem die Datenbankdatei für alle beschreibbar sein muss und damit z.B. im Netzwerk von allen Benutzern mit Vollzugriff gelöscht werden kann, falls sie gerade nicht gesperrt ist (benutzt wird). Ob es noch stimmt, weiß ich nicht, aber mir sagte jemand, dass zum Sperren eines Datensatzes die gesamte Tabelle gesperrt wird und sicher wird es noch etliche andere Punkte geben, weshalb bei geforderter Multiuserfähigkeit eine Access-Datenbank eher am Ende einer Liste stehen wird mit in Frage kommender Datenbanken.

Nicht nur für Java-Programmierer ist das Access-Datenbankformat recht uninteressant, falls nicht eine existierende, "gepflegte" benutzt werden muss, es gibt einfach andere bessere kostenlose.

kuehni
Beiträge: 3
Registriert: 05.05.2014, 14:16

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon kuehni » 08.05.2014, 06:56

Hallo,

nochmal vielen Danken für die ausführlichen Antworten.
Die haben mir echt geholfen und wertvolle Anregungen gegeben.
Ich werde jetzt ein paar verschiedene Varianten testen und dann schauen welche die Geeignetste ist.
Anfangen werde ich mit Jackcess, da alle Nutzer Windows mit Office nutzen.
Hierzu nur eine kleine Frage noch: Mit der Jackcess-Lösung spielt es keine Rolle mehr, dass Access 32bit und Netbeans ein 64bit Programm ist oder?
Danach versuche ich mal den von Access angebotenen export in ein SQL Format und zum Schluss versuche ich mal eine diekte SQL Variante. Bin mir aber noch nicht ganz im Klaren welche ich verwenden werde.
...auf jeden Fall: Vielen Dank nochaml!!!

Mit freundlichem Gruß
Der Kuehni

ebaumann
Beiträge: 284
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Eine Accessdatenbank (2007) mit Netbeans 8.0 auslesen

Beitragvon ebaumann » 08.05.2014, 07:27

kuehni hat geschrieben:Mit der Jackcess-Lösung spielt es keine Rolle mehr, dass Access 32bit und Netbeans ein 64bit Programm ist oder?


NetBeans läuft in einer Java-VM, die es als 32- oder 64-Bit Variante gibt, es ist kein Programm im Sinne von beispielsweise Access, das direkt ausgeführt wird. Ein typischer Start einer Java-Anwendung lautet deshalb z.B. "java -jar JavaApp.jar": Es wird das Programm "java" gestartet mit dem Parameter "-jar Archiv". Egal, ob NetBeans in einer 32- oder 64-Bit Java-VM läuft: Jackcess sollte funktionieren. Das spätere Programm wird ohnehin ohne die NetBeans-IDE gestartet, d.h. es läuft auch in einer Java-VM. Im Falle von Microsoft ODBC (JDBC-ODBC-Bridge) muss es in einer 32 Bit-Java-VM laufen (und auch NetBeans für Zugriffe auf die Tabellen einer MDB-Datei im Services-Tab). Da beide Java-Varianten gleichzeitig auf dem gleichen Rechner installiert sein können, ist das kein größeres Problem, die Nutzung der richtigen Java-Version muss aber auf allen Rechnern sichergestellt werden, die die Anwendung mit JDBC-ODBC-Bridge nutzen.


Zurück zu „NetBeans - Allgemeines“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste