1. rotestelefon, 21.05.2012 #1
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    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????
     
  2. DieGoldeneMitte, 21.05.2012 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    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.
     
  3. rotestelefon, 22.05.2012 #3
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    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)
     
  4. DieGoldeneMitte, 22.05.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    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.
     
  5. Tom299, 23.05.2012 #5
    Tom299

    Tom299 Android-Experte

    Für sowas benutzt man einen Webservice und macht keinen direkten Zugriff von der App auf die DB
     
  6. rotestelefon, 23.05.2012 #6
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    Wie bekomme ich denn sonst diesen Stacktrace?


    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?
     
  7. swordi, 23.05.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    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
     
  8. rotestelefon, 23.05.2012 #8
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    Verrätst du mir dann wie ich das mache, wenn ich generell relativ wenig Ahnung habe??
     
  9. swordi, 23.05.2012 #9
    swordi

    swordi Gewerbliches Mitglied

    google zeigt dir viele beispiele an.

    der einfachste weg ist sicher
    *) php datei am server
    *) mysql befragen
    *) xml oder json liefern
    *) mit android abrufen
     
  10. rotestelefon, 23.05.2012 #10
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    Das klingt aber relativ umfangreich ;-)

    Ist es denn wirklich so schwer so einen verdammten JDBC Treiber für Android zu finden der funktioniert???
     
  11. swordi, 23.05.2012 #11
    swordi

    swordi Gewerbliches Mitglied

    niemand, der ernsthaft mit android etwas macht, nutzt jdbc.

    das wird schon seine gründe haben :D
     
  12. rotestelefon, 23.05.2012 #12
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    Ich mache ja auch nichts ernsthaftes ;-) Aber trotzdem brauche ich etwas das funktioniert!
     
  13. swordi, 23.05.2012 #13
    swordi

    swordi Gewerbliches Mitglied

    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
     
  14. rotestelefon, 23.05.2012 #14
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    Ich habe prinzipiell gar keine Vorkenntnisse - zumindest nicht mit PHP.

    Kennst du ein gutes Tutorial oä. an das man sich halten kann??
     
  15. Tom299, 23.05.2012 #15
    Tom299

    Tom299 Android-Experte

    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 ;-)
     
  16. swordi, 23.05.2012 #16
    swordi

    swordi Gewerbliches Mitglied

    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
     
  17. rotestelefon, 23.05.2012 #17
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    aber es gibt leidder auch ganz viel Mist. Deswegen meine Frage, ob da jemand Erfahrung hat und ein gutes Tutorial kennt?
     
  18. rotestelefon, 24.05.2012 #18
    rotestelefon

    rotestelefon Threadstarter Neuer Benutzer

    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!
     
Die Seite wird geladen...
Similar Threads - Problem mit der Forum Datum
[ERLEDIGT] Problem mit Async Task und auszuführender Aufgabe Android App Entwicklung 02.05.2017
Problematik mit der Ausgabe von SQL Inhalten (ljava.lang) Android App Entwicklung 23.11.2016
Probleme mit Action Floating Button Android App Entwicklung Samstag um 23:45 Uhr
[ERLEDIGT] Probleme mit Wear Modul Android App Entwicklung 01.05.2017
[OFFEN] Probleme mit SearchView in ArrayAdapter Android App Entwicklung 28.04.2017
Probleme mit NFC File Transfer Android App Entwicklung 21.01.2017
Problem mit Thread bei Galaxy S5 und S6(Edge) Android App Entwicklung 23.09.2016
Probleme mit Android-Studio Android App Entwicklung 07.08.2016
Problem mit Android Studio Android App Entwicklung 21.07.2016
[OFFEN] git-Problem in Android Studio (Windows) Android App Entwicklung Mittwoch um 08:19 Uhr