2012-04-04 19 views
0

Ich habe ein Problem beim Herstellen einer Verbindung zu meiner MySql-Datenbank über Java/Android. Ich habe eine Datenbankdatei (MyDatabase.db) auf einem Windows7-Computer in meinem Netzwerk. Wenn ich von einem anderen Windows7 Computer aus arbeite (die Datei ist über den Windows Explorer zugänglich und ich kann über SQLDatabaseExplorer Änderungen an der Datenbank vornehmen) funktioniert folgender Code aus Eclipse, aber wenn ich meine Anwendung auf meinem Galaxy Tab installiere, wird der "DriverManager. getConnection() "gibt null zurück.NullPointerException in "DriverManager.getConnection" -Methode

 try { 
      String url = "http://192.168.178.21/Users/test/userdata/Database/MyDatabase.db"; 
      Class.forName ("com.mysql.jdbc.Driver"); 
      Connection connection = DriverManager.getConnection (url); 
      System.out.println ("Database connection established"); 
     } catch (SQLException e) { 
      Log.d("SQLException", "e.toString()"); 
     } 

Die SQLException in LogCat angemeldet ist:

java.sql.SQLException: path to '//192.168.178.21/Users/test/userdata/Database/MyDatabase.db': '/192.168.178.21' does not exist 

Ich denke, mein Problem in der URL-Zeichenfolge liegt ...? Aber ich habe nicht herausgefunden, wie ich es ändern kann, damit die Verbindung hergestellt werden kann.

Vielen Dank für jede Hilfe, Tim

EDIT: Vielen Dank für Ihre Hilfe bisher! Ich habe die Frage gestern aus meinem Kopf geschrieben, ohne auf meinen Code zu schauen ... Es tut mir leid, weil ich eine Menge Dinge durcheinander gebracht habe ... Es ist keine MySql-Datenbank, sondern eine SQLite-Datenbank ... Aber ich denke, das ändert nicht viel an der Programmierung. Ich benutze einen jdbc sqlite Treiber. Beim Start der folgenden Zeilen in einem Java-Eclipse-Projekt funktioniert alles einwandfrei und die Verbindung kann hergestellt werden. Aber auf meinem Gerät habe ich noch den Nullpointer ...

Gestern habe ich meinen Code geändert, damit er zu Ihren Ratschlägen passt. Aber das Problem besteht immer noch ... Um sicher zu sein, dass es nicht mit einigen Rechten oder Netzwerkeinstellungen zu tun hat, habe ich die DB-Datei auf mein Android-Gerät kopiert und versucht, mit den folgenden Codezeilen direkt zu verbinden:

Aber auch hier wirft getConnection einen NullPointer und ich weiß nicht warum ... Hatte jemand eine Vermutung, warum die Verbindung aus Eclipse aufgebaut werden kann und auf meinem Androidgerät scheitert? Kann ich einen falschen Treiber haben, funktioniert das nicht vom Gerät aus, sondern von Eclipse ...?

Vielen Dank im Voraus!

+0

möglich Duplikat von [Wie Daten mit einem ServerDatabase syncronize?] (Http://stackoverflow.com/questions/9998519/how-to-syncronize-data-with-a-serverdatabase) – Snicolas

+0

Verwendung 'getConnection (URL, Benutzername, Passwort) 'anstelle von' getConnection (url); ' –

Antwort

3

Das URL-Format für die MYSQL conenction String

jdbc:mysql://[host][,failoverhost...][:port]/[database] » 
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]... 

Wenn der Hostname nicht angegeben ist, wird standardmäßig 127.0.0.1. Wenn der Port nicht angegeben ist, wird standardmäßig 3306 verwendet, die Standardportnummer für MySQL-Server.

jdbc:mysql://[host:port],[host:port].../[database] » 
[?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]... 

Hier ist eine Beispielverbindung URL:

jdbc:mysql://localhost:3306/sakila?profileSQL=true 

bitte

0

JDBC-URLs haben die Form entsprechend ändern: jdbc: mysql: /// aber im doppelten Code aussehen. Sie möchten wahrscheinlich nicht direkt von einem Handy eine Verbindung zu einer Datenbank herstellen, aber bevorzugen einen Web-Service-Wrapper, um es zu tun.

0
try { 
     String url = "jdbc:mysql://localhost:3306/MyDatabase?user=root&password=root"; 
     Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
     Connection connection = DriverManager.getConnection (url); 
     System.out.println ("Database connection established"); 
    } catch (SQLException e) { 
     System.out.println("SQLException" + e.toString()); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (InstantiationException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
Verwandte Themen