Zugriff aus App auf MsAccess

  • 11 Antworten
  • Letztes Antwortdatum
W

willhelm66

Neues Mitglied
0
Hallo liebe Community,

ich möchte gerne mit meiner App Daten direkt aus einer MsAcces-Datenbank die auf einem Windows-PC liegt lesen bzw. schreiben. Dabei wäre es egal ob die Verbindung über WLAN oder per USB-Kabel zustande kommen müsste.

Da ich ziemlich neu in der App-Programmierung bin habe ich leider absolut keinen Ansatz wie ich an die Sache herangehen müsste.

Ich würde mich daher über jede Anregung (am besten sogar mit entsprechenden Codebeispielen) sehr freuen.
 
Am besten du schaust dir erstmal Grundlegend an, wie man auf Access-DB´s mittels Java zugreift. Bspw mit einer Konsolenanwendung.
Ein Einstiegspunkt könnte sein, dass du ein Treiber benötigst um auf die DB zuzugreifen. Google hierzu mal nach ODBC und Access.
Mehr kann ich dir leider nicht sagen, da ich selbst keine Access-DB´s verwende sondern nur MySQL, usw.

Grüße Swoop
 
Erstmal vielen Dank für deine Antwort.

ODBC für Access einrichten wäre ja nicht das Problem.

Meine Frage wäre halt nur, wie kann ich dann von der App auf dem Device auf den ODBC auf der Windows-Maschine zugreifen.
 
Du musst deine Datenbank im Netzwerk freigeben, dann kannst du über WLAN drauf zugreifen, sofern du einen JDBC/ODBC Treiber findest, der unter Android funktioniert .
MS Access JDBC Driver -- Connecting MS Access with Java ist eine kostenpflichtige Java Treiber für Remote MS Access Datenbanken. Das ist keine Empfehlung, ich weiß auch nicht ob es unter Android funktioniert, auf der Seite ist jedoch ein bisschen erklärt, wie man eine Datenbank im Netzwerk freigibt um dann mit ihrem Treiber darauf zu zugreifen.

Eine andere alternative wäre du schriebst eine web-basiertes Backend, .net Framework 2 hat da schon Elemente dafür, lässt das als Server laufen und schriebst deine App als Frontend, die mit dem Backend kommuniziert.
Kommt halt auf deine Programmierkenntnisse an. Die letzte Variante ist wohl sicherer, da du die DB nicht im Netzwerk freigeben musst, und einfacher, sofern du .net kannst.
 
Warum MS Access?
 
perpe schrieb:
Die letzte Variante ist wohl sicherer, da du die DB nicht im Netzwerk freigeben musst, und einfacher, sofern du .net kannst.
Vorallem is sie besser sobald mehrere Leute gleichzeitig auf die Datenbank zugreifen wollen. Ein Problem zb. wäre, wenn zufälligerweise zwei Apps gleichzeitig die selben Daten ändern wollen. Da ist so eine Server-Client-Anwendung natürlich viel besser.
Allerdings will der TO glaub ich nur alleine damit Kommunizieren bzw. nur Daten transferieren.
 
Habe ich auch so verstanden.
Ich gehe nur auch davon aus, dass wenn wer MS Access benutzt, dann auch ein paar Programmierkenntnisse mit den MS Produkten vorhanden sind. Warum dann also nicht gleich die bessere und evt. für einen Neuling in der Android Programmierung einfachere Variante nehmen?

Am besten wäre es natürlich eine andere DB zu nehmen.
 
Sorry, für die verspätete Rückmeldung.

Noch mal vielen Dank für die Tipps. Zu euren Fragen und Annahmen:

1. Die Stammanwendung ist in MSAccess geschrieben und kann leider auch nicht mehr umgestellt werden. Mir persönlich kommt es ja entgegen, da ich damit wenigstens einigermaßen sicher umgehen kann.

2. Die .Net-Entwicklung ist leider an mir vorübergegangen.

3. Es sollen tatsächlich mit der App nur ein paar mobil erfasste Daten mit der Access-DB synchronisiert werden.

Ich muss auch gestehen, dass ich Java-technisch ein absoluter Neuling bin und es bisher immer irgendwie vermeiden konnte mich damit zu beschäftigen. Durch Access und VBA bin ich außerdem schon ziemlich "prozedural versaut" wie ihr wahrscheinlich sagen würdet. Dafür kämpfe ich mich bisher allerdings ziemlich tapfer durch das App-Projekt und muss sogar zugeben, dass Java und die strikte Kapselung des Codes auch durchaus ihre Existensberechtigung haben. Nur für kleine Projekte halte ich es für ein bisschen "overfeatured".

BtT: Ich dachte der ODBC müsste auf der Windows-Maschine eingerichtet werden, aber anscheinend brauch ich den auf dem Phone. Oder auf beiden? Wie kann ich denn einen JDBC-Treiber auf dem Phone/Emu installieren?

Und angenommen ich bekomme den irgendwie eingerichtet, wie greife ich dann im Code darauf zu?

Gruß
Willhelm
 
Du hast dir etwas kompliziertes vorgenommen.
Ich kenne mich nicht wirklich mit MS Access aus, hatte nur einmal damit zu tun, war Ende der 90er im EDV Unterricht.
Hinzukommt das Remote Zugriff auf Datenbanken nun mal nicht gerade die feine Art ist und man nach Möglichkeit vermeiden sollte.

Ich versuche mal trotzdem zu Antworten, meine Fehler dürfen dann gern die anderen korrigieren.
Das Problem ist das MS Access keinen Datenbankserver bereitstellt, dadurch musst du über die ODBC API gehen um sie im Netzwerk bereitzustellen, daher ODBC auf Windows einrichten.
Von JAVA aus kannst du dann über ein JDBC-ODBC Bridge auf die Datenbank zugreifen. JDBC benötigt jedoch auch immer einen virtuellen Treiber, um mit der Datenbank umgehen zu können (siehe Java Database Connectivity). JDBC ist in Android enthalten, der JDBC-ODBC Bridge Treiber wird von SUN bereitgestellt, ob dieser in Android verfügbar/funktionsfähig ist, weiß ich nicht.

Du musst also wahrscheinlich einen alternativen ODBC Treiber finden, der unter Android funktioniert. Das sind keine systemweiten Treiber sondern meist *.jar Dateien, die du in dein Projekt einbindest, quasi Bibliotheken und dann Bestandteil deiner App sind.
Wenn du das hast, dann kannst java.sql.* in dein Projekt importieren um auf deine DB zuzugreifen.

Die andere alternative und nach meiner Ansicht, die bessere, wäre du nutzt eine Client-Server Methode, d.h. schreibst einen Server(mit welcher Programmiersprache auch immer, mit VB müsste das auch gehen), der auf dem PC läuft und eine Android App, die dann nur als Client dient.

Falls du MS Access 2010 nutzt und einen SharePoint Server, dann kannst du damit auch eine Access Datenbank im Web freigeben und so über den Browser nutzen, siehe Erstellen einer im Web freizugebenden Access-Datenbank - Office.com

Es gibt auch Access Treiber für JDBC, diese funktionieren jedoch nur mit lokalen Datenbanken, d.h. du müsstest die mdb auf deinen Androiden kopieren, Java Library for MS Access ist z.B. so einer. Funktioniert wohl auch teilweise(?) unter Android (z.B. Panacea Datenbank nutzt sie)
 
Zuletzt bearbeitet von einem Moderator:
Hallo perpe,

Falls du MS Access 2010 nutzt und einen SharePoint Server, dann kannst du damit auch eine Access Datenbank im Web freigeben und so über den Browser nutzen, siehe Erstellen einer im Web freizugebenden Access-Datenbank - Office.com

Das würde wahrscheinlich leider nicht gehen, da während der Erfassung der Daten kein Netzwerkzugriff besteht. Und wenn ich das richtig verstanden habe, müsste doch eine permanente Verbindung zur Datenbank bestehen? Und da ich die eigentliche App nun fast fertig habe und mir die Zeit ein bisschen davon läuft würde ich diese auch lieber benutzen.

Die anderen Möglichkeiten (Bridge Treiber oder .mdb auf Android kopieren) werde ich mir noch mal anschauen.

Auf jeden Fall vielen Dank erstmal.
 
Netzwerkzugriff muss dafür wohl sein, da die Daten direkt in DB eingepflegt werden.

Die Frage kommt zwar spät, aber in welche Richtung soll den gesyncht/abgeglichen werden. Auf beiden Seiten oder nur die mit der App erfassten Daten an die DB weitergeben? In dem Fall könntest du sie auch z.B. in CSV exportieren und diese dann mit Access importieren.

Habe oben noch einen Fehler drinnen, Jackcess macht keinen Gebrauch von JDBC, ist davon unabhängig.
 
@perpe: es muss leider in beide Richtungen gesynct werden. An CSV hatte ich auch schon gedacht, dieses ließe sich doch wahrscheinlich auch auf dem Androiden wieder importieren, oder? Das wäre aber wirklich nur die allerletzte Notlösung, lieber wäre mir wirklich noch der direkte Zugriff auf die AccessDB.

Ich habe mir jetzt mal folgenden JDBC-ODBC Bridge Treiber angeschaut:

Multi-Tier JDBC to ODBC Bridge Driver (Enterprise Edition)

Dieser soll auch unter Android laufen. Allerdings haben sich natürlich auch wieder neue Fragen ergeben, die wichtigste: Welches Client-Betriebssystem muss ich denn wählen? (Generic Linux, JVM, ...) Ich hätte jetzt erst mal auf JVM getippt, ist aber vermutlich verkehrt, oder? Android stünde auf jeden Fall nicht zur Auswahl.

Und wenn ich den richtigen Client habe, wie bringe ich den auf meinen Androiden? Kann ich den unter Eclipse in mein Projekt einbinden (wie oben beschrieben) oder bedarf es noch zusätzlicher Installatioenen auf dem Gerät selbst?
 
Zurück
Oben Unten