Zugriff auf entfernten mySQL-Server via Android

Hallo liebe NG,

ich habe folgenden Code unter Java am PC und lokalen Server zum Laufen gebracht. Meine Absicht ist es mit meinem S3 (Android 4.1.2) Daten in einem entfernten mySQL-Server abzulegen. Dazu möchte ich gerne diesen Code entsprechend adaptieren. Dazu hätte ich gerne folgende Fragen an euch gerichtet und hoffe sehr, dass ihr mir helfen könnt.

- Gibt es bei der Abbildung von Java auf Android Einschränkungen, die ich beachten muss?
- Warum dieser DriverManager? Läd er zur Laufzeit einen Treiber? Simuliert er einen mySQL-Clienten um mit der mySQL-Datenbank in Verbindung treten zu können?
- Muss ich den JConnector in mein Androidsystem einbinden damit die VM den JDBC-Treiber findet, darauf zugreifen kann und wie mache ich das?

Mir genügen schon brauchbare Links, die mir weiterhelfen könnten den Zusammenhang zu verstehen. Wenn es aber möglich ist in deutsch, da englische Texte über Dinge die nicht verstehe für mich umständlich zu lesen sind.

Vielen Dank für das wohlwollende Lesen meiner Anfrage.
lg Thomas

Java:
package client;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Collection {


    public Collection() {
        super();
    }

    public static void main(String[] args) {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception ex) {
            System.out.println("Class.forNAme: " + ex.toString());
        }
        try {
            conn = DriverManager.getConnection("jdbc:mysql://localhost/gpslogger?user=root");
        } catch (SQLException ex) {
            System.out.println("SQLExeption: " + ex.getMessage());
            System.out.println("SQLSate: " + ex.getSQLState());
            System.out.println("VendoeError: " + ex.getErrorCode());
        }

        Statement stmt = null;
        ResultSet rs = null;

        try {
            try {
                stmt = conn.createStatement();
            } catch (SQLException sqle) {
                // TODO: Add catch code
                System.out.println("conn.createStatement: " + sqle.toString());
                sqle.printStackTrace();
            }
            try {
                rs = stmt.executeQuery("SELECT * FROM gpsdata");
                rs.absolute(3); // nur zum testen
                System.out.println(rs.getString("name")); // und es funktioniert auch
                // Diese Klasse muss noch untersucht werden :-)
                //System.out.println(rs.getArray(1).toString());
            } catch (SQLException sqle) {
                // TODO: Add catch code
                System.out.println("stmt.executeQuery: " + sqle.toString());
                sqle.printStackTrace();
            }
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqle) {
                    // TODO: Add catch code
                    System.out.println("rs.close: " + sqle.toString());
                    sqle.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException sqle) {
                    // TODO: Add catch code
                    System.out.println("stmt.close: " + sqle.toString());
                    sqle.printStackTrace();
                }
            }
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:

dzim

Top Contributor
Also auf diese Art möchtest du ganz sicher nicht von Android auf MySQL zugreifen!

Wie der Name es nahelegt, ist DriverManager etwas, was einen Treiber lädt (JDBC-Treiber). Ich habe gerade keine Entwicklungsumgebung auf und kann es nicht überprüfen, aber da das Android-SDK nicht alles von Java implementiert und seine eigene DB-Abstraktionsschicht hat, werden dir diese wahrscheinlich Mittel sowoeso nicht zur Verfügung stehen und es ist generell eher nicht so gut, von einem Programm irgendwo im Netz direkt auf eine DB zuzugreifen. Inperformant^2!

Du wirst also einen Service (via Web) benötigen, der kann dann als Server dir die Daten der DB zur Verfügung stellen - musst halt "nur" eine Schnittstelle schaffen, wie man Daten holt/schickt.
Java-Mittel wäre mittels Java EE einen WebService via SOAP oder REST zu schreiben - kannst aber auch irgend was anderes nehmen, wie z.B. node.js

Viel Erfolg!
 
Hi lieber dzim,

vielen Dank für deine Mühe. Wäre eine Verbindung via apache+mysql+php denkbar? Die Anfrage also an eine seite.php per get oder post senden, dort entsprechend in die Datenbank eintragen. Würde sich dann auf meinem Handy ein Browser öffnen?
Ich werde mir deine vorgeschlagenen Ideen ansehen.

mfg Thomas
 

dzim

Top Contributor
Wie du letzten Endes die Serverseite gestaltest, ist natürlich dir überlassen. Nimm die Technologie, mit der du am vertrautesten bist - dann geht es halt am schnellsten. Node.js habe ich nur vorgeschlagen, weil es wirklich sehr schlank ist - ich selbst bin kein JavaScript-Fan und würde wohl eher irgendwass aus der Java-Welt nehmen, aber hier sind schlicht und ergreifend nur deine Programmierkenntnisse der entscheidende Faktor.

Bedenke auch: Wenn du deinen Server ins Internet stellst, solltest du ihn auch absichern. HTTPS (dann hat wenigstens nur die NSA was davon :p ) und der Einfachheit halber noch BasicAuthentication oder so. Auf der Clientseite (Android) kannst du dann entweder die Java-API verwenden, oder (eher empfohlen) etwas vom Apache- oder Spring-Framework.
 
Hallo lieber dzim,

ich habe mich nun, auf Grund deines Anratens, etwas intensiver mit den serverseitigen Belangen beschäftigt. Ich sehe nun auch, das dies eine weitaus solidere Basis darstellt und letzten Endes gar nicht so schwer ist. Ich habe mir also GlassFish und Derby zusammmen mit NetBeans installiert, ein paar gute Tutorials angeschaut, sie an meinem Bedarf angepasst und schon hat es funktioniert. Vielen Dank noch einmal für deine Ratschläge, sie haben mich dazu inspiriert einmal über den Tellerrand hinauszusehen und dort gab es viel zu entdecken. :toll:

glg
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W onViewCreated blockiert Session Zugriff gegensatz zu onCreateView? Fragment Android & Cross-Platform Mobile Apps 25
R Android Zugriff auf view von MainActivity Android & Cross-Platform Mobile Apps 7
J Android Zugriff auf eine Datei, diese von einer anderen App erstellt wurde? Android & Cross-Platform Mobile Apps 11
M Zugriff auf Helligkeitsregler von Handy? Android & Cross-Platform Mobile Apps 17
C Zugriff auf die Position eines String- bzw Spinner-Arrays Android & Cross-Platform Mobile Apps 1
E Wie erhalte ich Zugriff auf das Microfon? (Android Studio) Android & Cross-Platform Mobile Apps 9
B Android Kein Zugriff auf Telefonspeicher (Android 6) Android & Cross-Platform Mobile Apps 1
N Zugriff auf TextView in ListItem via ButtonClick Android & Cross-Platform Mobile Apps 4
K Android Zugriff auf FTP-Server Android & Cross-Platform Mobile Apps 1
S Android Zugriff auf Bilder im Telefonspeicher + Galeriedarstellung Android & Cross-Platform Mobile Apps 5
N Android Zugriff auf PlayStore im Abgesicherten Modus verhindern Android & Cross-Platform Mobile Apps 2
T Android Reflection zugriff auf setFocusableInTouchMode Android & Cross-Platform Mobile Apps 5
L Android Zugriff aus unbound Service auf Preferences Android & Cross-Platform Mobile Apps 2
H Smartphone (Front-)Kamera-Zugriff per Website Android & Cross-Platform Mobile Apps 6
S Android Zugriff auf FTP Server Android & Cross-Platform Mobile Apps 7
S Android Zugriff auf Website fuers Infos Android & Cross-Platform Mobile Apps 2
C Java ME Kein Java Zugriff auf Samsung! Android & Cross-Platform Mobile Apps 5
R Java ME mit Zugriff auf Adressbuch / Kalender Android & Cross-Platform Mobile Apps 3
H FileConnection: Frage nach Dateisystem-Zugriff unterdrücken Android & Cross-Platform Mobile Apps 5
1 zugriff auf handy-microfon Android & Cross-Platform Mobile Apps 2
H Zugriff auf XML/DB oder aehnliches Android & Cross-Platform Mobile Apps 3
G Zugriff auf den gesamten Bildschirm bei PDAs Android & Cross-Platform Mobile Apps 8
A Android entfernten Login-Script erreichen Android & Cross-Platform Mobile Apps 1
S Combobox mit 2 Spalten aus MySql Tabelle Android & Cross-Platform Mobile Apps 1
S Android Studio MySql Daten in Listview mit sub Item Android & Cross-Platform Mobile Apps 11
J MySQL Simulation für Android App Android & Cross-Platform Mobile Apps 2
M Android Android App-JSP-MySQL Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben