# mdb (access) ansteuern: Welcher weg ist der Beste



## Lebowski1 (5. Mrz 2015)

Hallo,

ich muss eine kleine Anwendung schreiben, die einen bestehenden Datenbank (mdb) bearbeitet. Arbeiten mit Datenbanken ist bei mir schon lange her. 

Nun scheint es ja so, dass  jdbc-odbc wohl nicht mehr zeitgemäß ist. Ich habe schon mit jackcess ein wenige rum experimentiert, aber damit kann ich keine sql queries machen. 

Gibt es irgendeine Möglichkeit/libary mit der ich Access-Datenbanken ansteuern kann und sql-queries ausführen kann?

Besten Dank


----------



## Ruzmanz (14. Mrz 2015)

Evtl. bist du schon auf UCanAccess gestoßen? Damit kannst du deine Access-Datenbank über die JDBC Schnittstelle ansprechen. Nach Möglichkeit sollte man die Nutzung von MS Access komplett vermeiden.


----------



## AduVonTubka (17. Mrz 2015)

Hallo,
ich habe schon "http://sourceforge.net/projects/ucanaccess/" eingesetzt und habe nur sehr gute Erfahrungen damit gemacht. Wenn du dir dann noch Netbeans installierst, kannst du dort den Wizard zum generieren der JPA Entity Klassen verwenden. Das funktioniert super.
Wenn du ansonsten doch lieber Eclipse verwendest, kannste die JPA Klassen und die pesistance.xml ja nach Eclipse rüberkopieren und da weiter programmieren.
Im Gegensatz zu meinem Vorredner kann ich den Einsatz von Access nur wärmstens empfehlen. Access ist ausgereift und man kann dort erstaunlich leicht mal eben etwas ausprobieren, um dann später eine feine Java Oberfläche zu bauen. Am liebsten neuerdings in JavaFX. Coole Sache.
Wer schon mal Access richtig verwendet hat, z.B. zum Erstellen von Tabellen, Abfragen und Relationen der wird das nicht mehr missen wollen - man klickt sich das halt einfach zusammen. Geht viel schneller als sich das von Hand zusammen zu frickeln. Auf der Arbeit bastel ich mir für die da verwendete Oracle DB auch mit Access und dem Abfrage Wizard die Views zusammen. Den SQL Code kann man fast 1:1 übernehmen.
Wenn du UCanAccess verwendest , verwendest du eben nicht wie oben behauptet einen JDBC Treiber, sondern einen richtigen JDBC Treiber. Im Hintergrund von UCanAccess wird in Wirklichkeit eine hsqldb.jar Datenbank zum Durchgriff verwendet. Davon kriegst du als Anwender aber nichts mit.
Frisch voran
Gruß Adu


----------



## hansi83 (1. Jul 2016)

Hallo AduVonTubka, 

ich würde auch gerne den Weg gehen den du eingeschlagen hast mit jpa und ucanaccess. Leider bekomme ich schon eine Fehlermeldung,  wenn ich einen neuen Record per persist einfügen möchte. 

Exception in thread "AWT-EventQueue-0" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 user lacks privilege or object not found: IDENTITY_VAL_LOCAL
Error Code: -5501
Call: SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
[EL Warning]: 2016-07-01 11:18:52.936--ClientSession(786052110)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 user lacks privilege or object not found: IDENTITY_VAL_LOCAL
Error Code: -5501
Call: SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1
Query: ValueReadQuery(name="SEQ_GEN_IDENTITY" sql="SELECT IDENTITY_VAL_LOCAL() FROM SYSIBM.SYSDUMMY1")


Könntest du mir ein Beispiel geben wie du es angestellt hast. 

Vielen Dank! 
PS: Ich weiss, dass der Beitrag älter ist.


----------

