Problem mit der Verbindung zur DB

R

rotestelefon

Neues Mitglied
0
Hallo,
kann mir jemand bei meiner Entwicklung einer App (in NetBeans) helfen?! Mein Problem liegt bei der Verbindung zu einer Datenbank, die auf einem Webserver liegt.

Ich habe folgenden Code:

Code:
import android.os.Bundle;
import com.mysql.jdbc.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Enumeration;
import java.util.Properties;

public class Activity1 {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        for (Enumeration<java.sql.Driver> e = DriverManager.getDrivers(); e.hasMoreElements();) {
            System.out.println(e.nextElement().getClass().getName());
        }

        Connection connection = null;
        String driverName = "com.mysql.jdbc.Driver"; 
        try {
            Class.forName(driverName).newInstance();;
        } catch (ClassNotFoundException e) {
            System.out.println("Where is your MySQL JDBC Driver?");
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }

        String serverName = "";
        String mydatabase = "";
        String username = "";
        String password = "";

        Properties props = new Properties();
        props.setProperty("user", username);
        props.setProperty("password", password);
        props.setProperty("autoReconnect", "true");
        props.setProperty("characterEncoding", "UTF-8");

        String url = "jdbc:mysql://" + serverName + "/" + mydatabase; 
        try {
            connection = (Connection) DriverManager.getConnection(url, props);
            System.out.println("Connected\n" + connection);
        } catch (java.sql.SQLException e) {
            System.out.println("Connection Failed");
            e.printStackTrace();
        }

        try {
            connection.setAutoCommit(false);
        } catch (java.sql.SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        String sql = "select * from koordinate";
        java.sql.Statement stm;
        try {
            stm = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
            ResultSet rs = stm.executeQuery(sql);
        } catch (java.sql.SQLException e) {
            e.printStackTrace();
        }
                
    }
}
Im Manifest habe ich auch
Code:
<uses-permission android:name="android.permission.INTERNET" />
Und "mysql-connector-java-5.1.13-bin.jar" ist bei Libraries eingebunden.

Die App läuft ansonsten fehlerlos, aber ich bekomme immer nur ein "Connection Failed". Kann mir jemand helfen????
 
Stimmt der Servername, der Datenbankname? (in deinem code ist beides leer)

Ist der Server im selben/richtigen Netzwerk? (Konfiguration vom mysql server?)

Ich bin jetzt nicht so fit, was mysql betrifft, aber kommt der Treiber ohne JNI aus? (der müsste nämlich extra nach Android portiert werden).

Zeig mal den ganzen Stacktrace, vielleicht ergeben sich daraus weitere hinweise.
 
Also nachdem ich noch ganz neu in der Programmierung bin, weiß ich das mit dem JNI auch nicht.

Der Servername und Datenbankname stimmt ganz sicher, ich habe ihn nur beim Kopieren raus genommen.

Ich bin mir auch relativ sicher, dass mit dem Server alles passt.

Ist das der Stacktrace, den du sehen wolltest? Ich habe mich damit noch nie beschäftigt, deswegen musste ich jetzt erst einmal suchen was das genau ist.

Code:
10:47:11.396	267	#267	ERROR	Launcher	MTP-LAUNCHER: media scanning not yet finished. 
10:47:32.426	1237	#1237	ERROR	AndroidRuntime	/system/csc/feature.xml ==> cannot open file
10:47:35.956	1254	#1254	ERROR	AndroidRuntime	/system/csc/feature.xml ==> cannot open file
10:47:41.356	172	#172	ERROR	PowerManagerService	CurLock p:3 mPS:1
10:47:44.996	1262	com.map.app	ERROR	dalvikvm	Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
10:47:50.246	294	#294	ERROR	CheckinTask	Checkin failed: [url]https://android.clients.google.com/checkin[/url] (request #0)
10:47:50.246	294	#294	ERROR	CheckinTask	org.apache.http.conn.ConnectTimeoutException: Connect to /209.85.148.139:443 timed out
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:153)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
10:47:50.246	294	#294	ERROR	CheckinTask	    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
10:47:50.246	294	#294	ERROR	CheckinTask	    at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:262)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.common.http.GoogleHttpClient.executeWithoutRewriting(GoogleHttpClient.java:203)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.common.http.GoogleHttpClient.execute(GoogleHttpClient.java:245)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.common.http.GoogleHttpClient.execute(GoogleHttpClient.java:313)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.gsf.checkin.CheckinTask.sendRequest(CheckinTask.java:243)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.gsf.checkin.CheckinTask.doInBackground(CheckinTask.java:148)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.gsf.checkin.CheckinService$1.doInBackground(CheckinService.java:221)
10:47:50.246	294	#294	ERROR	CheckinTask	    at com.google.android.gsf.checkin.CheckinService$1.doInBackground(CheckinService.java:228)
10:47:50.246	294	#294	ERROR	CheckinTask	    at android.os.AsyncTask$2.call(AsyncTask.java:185)
10:47:50.246	294	#294	ERROR	CheckinTask	    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10:47:50.246	294	#294	ERROR	CheckinTask	    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10:47:50.246	294	#294	ERROR	CheckinTask	    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
10:47:50.246	294	#294	ERROR	CheckinTask	    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
10:47:50.246	294	#294	ERROR	CheckinTask	    at java.lang.Thread.run(Thread.java:1096)
 
rotestelefon schrieb:
Ist das der Stacktrace, den du sehen wolltest?

Nicht ganz, das mit dem CheckinTask ist von einem völlig anderen Prozess.

Aber die Zeile davor ist schon interessanter, die besagt, dass das MySQL JDBC Modul nicht geladen werden konnte, weil es die Klasse javax.naming.StringRefAddr nicht finden kann. Dummerweise ist javax.naming nicht bei Android dabei, was bedeutet, dass der JDBC Treiber nicht zu Android kompatibel ist.

Du musst also entweder einen anderen JDBC Treiber finden oder ein jar-File finden, das javax.naming.* für Android bereitstellt.
 
Für sowas benutzt man einen Webservice und macht keinen direkten Zugriff von der App auf die DB
 
DieGoldeneMitte schrieb:
Nicht ganz, das mit dem CheckinTask ist von einem völlig anderen Prozess.

Wie bekomme ich denn sonst diesen Stacktrace?


DieGoldeneMitte schrieb:
Du musst also entweder einen anderen JDBC Treiber finden oder ein jar-File finden, das javax.naming.* für Android bereitstellt.

Nach stundenlangem Probieren und Suchen bin ich leider immer noch nicht weiter gekommen. Mit anderen JDBC Treibern funktioniert es auch nicht. Dann habe ich es mit jndi.jar versucht, aber ich bin auch nicht weiter gekommen. Hast du noch weitere Tips für mich?
 
wie wärs wenn du auf jdbc verzichtest und einen webservice baust ? ist sowieso die bessere lösung

in der zeit in der du jdbc treiber für android suchst, hast sicher einen webservice realisiert :D
 
swordi schrieb:
in der zeit in der du jdbc treiber für android suchst, hast sicher einen webservice realisiert :D

Verrätst du mir dann wie ich das mache, wenn ich generell relativ wenig Ahnung habe??
 
google zeigt dir viele beispiele an.

der einfachste weg ist sicher
*) php datei am server
*) mysql befragen
*) xml oder json liefern
*) mit android abrufen
 
Das klingt aber relativ umfangreich ;-)

Ist es denn wirklich so schwer so einen verdammten JDBC Treiber für Android zu finden der funktioniert???
 
niemand, der ernsthaft mit android etwas macht, nutzt jdbc.

das wird schon seine gründe haben :D
 
swordi schrieb:
niemand, der ernsthaft mit android etwas macht, nutzt jdbc.

das wird schon seine gründe haben :D

Ich mache ja auch nichts ernsthaftes ;-) Aber trotzdem brauche ich etwas das funktioniert!
 
Dann mach es so wie man es dir empfiehlt. Wenn nicht wirst dich wohl allein damit rumschlagen müssen.

Siehst ja dass es mit jdbc Probleme gibt.

Ein webservice ist in einem halben Tag ohne grosse vorkenntisse machbar

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
Ich habe prinzipiell gar keine Vorkenntnisse - zumindest nicht mit PHP.

Kennst du ein gutes Tutorial oä. an das man sich halten kann??
 
Du brauchst kein PHP. Wenn du Android progammierst, dann kannst du ja Java. Mit Eclipse kannst du dir ganz einfach Java WebServices generieren lassen. Und Tutorials gibts dazu auch viele im Netz. Wie das mit Netbeans funzt, kann ich dir allerdings nicht sagen, hab das schon Jahre nicht mehr benutzt ;-)
 
dazu gibts echt tausend seiten.

ist keine große hexerei. kannst auch java nutzen anstelle von php - klar. nur irgendwelche webhoster haben meistens nur php und kein java.

ohne aufwand geht aber genau genommen gar nichts in der programmierung
 
Tom299 schrieb:
Und Tutorials gibts dazu auch viele im Netz

aber es gibt leidder auch ganz viel Mist. Deswegen meine Frage, ob da jemand Erfahrung hat und ein gutes Tutorial kennt?
 
okey, es hat nun auch so funktioniert. erklären kann ich zwar nicht, was ich jetzt verändert habe, aber plötzlich gings :)
Trotzdem danke für eure Hilfe!
 

Ähnliche Themen

M
Antworten
3
Aufrufe
149
moin
M
S
Antworten
4
Aufrufe
990
Sempervivum
S
B
Antworten
4
Aufrufe
472
bb321
B
Zurück
Oben Unten