Probleme bei der Verbindung zu remotemysql.com

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme bei der Verbindung zu remotemysql.com

    Hallo Zusammen,
    ich schreibe derzeit eine kleine App, welche einen Wert aus einer SQL Datenbank abholen soll.
    Die Datenbank liegt bei "remotemysql.com", da mein Auto einen Wert in die Datenbank schreiben soll.

    Leider bekomme ich derzeit den folgenden Fehler "E/mMysql: Exception Communications link failure".

    Hier der Quellcode der Verbindung.


    Java-Quellcode

    1. private void LoadCarPosition(){
    2. (new Thread(new Runnable() {
    3. @Override
    4. public void run() {
    5. Connection con = null;
    6. double dblLongitude;
    7. double dblLatitude;
    8. try{
    9. Class.forName("com.mysql.jdbc.Driver").newInstance();
    10. con = DriverManager.getConnection
    11. ("jdbc:mysql://remotemysql.com:3306/<datenbank>","<Benutzer>","<Kennwort>");
    12. try{
    13. String sql;
    14. // sql
    15. sql = "SELECT Name,Latitude,Longitude,Timestamp FROM <TabellenName> where Name like 'Auto'";
    16. PreparedStatement prest = con.prepareStatement(sql);
    17. ResultSet rs = prest.executeQuery();
    18. rs.next();
    19. dblLongitude=rs.getFloat(2);
    20. dblLatitude=rs.getFloat(3);
    21. CarPosition = new GeoPoint( dblLongitude, dblLatitude );
    22. CarTime = rs.getTimestamp(4);
    23. prest.close();
    24. con.close();
    25. CarMarker.setPosition(CarPosition);
    26. CarMarker.setTitle("Auto abgestellt am : " + CarTime.toString() );
    27. Log.i("mMysql ", "Auto abgestellt am : " + CarTime.toString() + " Position : " + CarPosition.toString() );
    28. }
    29. catch (SQLException s){
    30. System.out.println("SQL statement is not executed!");
    31. Log.e("mMysql ", "SQLException " + s.getMessage());
    32. }
    33. }
    34. catch (Exception e){
    35. Log.e("mMysql ", "Exception " + e.getMessage());
    36. }
    37. }
    38. })).start();
    39. }
    Alles anzeigen
    Unter Abhänigkeiten habe ich die folgende Lib eingebunden:


    Quellcode

    1. dependencies {
    2. ...
    3. implementation 'mysql:mysql-connector-java:5.1.+'
    4. }
    Ich habe diesen Dienstleister genommen, da er kostenlos ist und eine Datenbank zur Verfügung stellt. Wenn es bessere Alternativen gibt, bin ich offen für andere Lösungen.
    In der Datenbank sind derzeit nur 3 Werte abgelegt.

    Viele Grüße
    R.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Ritchie () aus folgendem Grund: Fehler im Quellcode beseitigt, da der ursprüngliche Code die Meldung "SQLException Before start of result set" auswirft. hier habe ich das rs.next(9 eingefügt um den ersten Record zu setzen.

  • Denke daran, dass es sehr gefährlich ist, Passwörter in dem Code einer App zu speichern ("jdbc:mysql://remotemysql.com:3306/<datenbank>","<Benutzer>","<Kennwort>"). Mit einem einfachen Java Decompiler kann jeder das Passwort auslesen und mit der Datenbank machen was er will.

    Daher solltest Du besser noch einen Application-Server (Java,PHP,Node.js, etc.) mit Login (OAUTH2,JWT, etc.) verwenden.
  • Hallo Michael,

    wie kann man sowas realisieren, wenn ich derzeit nicht auf einen kostenpflichtigen Server zugreifen will.

    Der Quellcode oben arbeitet jetzt korrekt und ist derzeit nur für mich gedacht. Dein Hinweis ist aber korrekt
    und wird von mir auch noch vorgesehen.

    Die Meldungen oben kam durch meine Firewall, welche eine Datenverbindung über diesen Port nicht zugelassen hat.
    Hier habe ich vorübergehend eine Ausnahme für das Handy erstellt.

    Viele Grüße
    R.