1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Dakine, 12.03.2012 #1
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    Hallo ich habe eine App in der ich bisher Daten in die interne Sqllite Datenbank schreiben,lesen,verändern kann. Jetzt möchte ich diese Daten in eine mySql Datenbank auf dem PC übertragen.
    Hier mein Code der auch in einem normalen Javaprojekt funktioniert:

    package app.kira;

    import java.sql.*;

    import java.sql.DriverManager;

    public class MyConnection {

    private static Connection conn = null;

    private MyConnection() {
    }

    public static Connection connect() throws ConnectException {
    if (conn == null) {
    try {

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    conn = DriverManager.getConnection(
    "jdbc:mysql://localhost/dbbase", "root", "root");
    System.err.println("connected");

    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } catch (Exception e) {
    e.printStackTrace();
    }

    }
    return conn;
    }

    public static void disconnect() throws DisconnectException {
    try {
    conn.close();
    } catch (Exception e) {
    throw new DisconnectException();
    }
    }
    }



    package app.kira;


    import java.sql.Connection;
    import java.sql.PreparedStatement;



    public class Application{

    private Connection conn;
    private PreparedStatement preparedStatement;

    public Application() throws ConnectException, java.sql.SQLException {
    conn=MyConnection.connect();
    insert(5555,6666);
    }


    public void insert(int id,int nr) throws ConnectException, java.sql.SQLException {
    String str = "insert into dbbase.fodata"
    + "(_id,nr)"
    + "values( ?, ?)";

    // String str="INSERT INTO `dbbase`.`fodata` (`_id`, `nr`) VALUES (?, ?)";
    try {
    preparedStatement = conn.prepareStatement(str);
    } catch (Exception e) {
    throw new ConnectException();
    }
    try {
    preparedStatement.setInt(1, id);
    preparedStatement.setInt(2,nr);
    preparedStatement.executeUpdate();
    System.out.println("Eintrag added");
    } catch (Exception e) {
    e.printStackTrace();
    }

    }


    }



    }

    -----------------------------------------------------------------------
    In meiner StartActivity rufe ich dann
    "Application app=new Application(); "
    auf.
    Es kommt keine Fehlermeldung aber es wird auch nichts in die Datenbank des PCs eingefügt. Ich vermute es liegt an der Host Ip-Adresse die momentan localhost ist. Ich habe es bereits mit der IP-Adresse von meinem PC versucht(192.168.2.100).

    Wie kann ich auf die DB des PCs zugreifen?
     
  2. snowman2, 12.03.2012 #2
    snowman2

    snowman2 Erfahrener Benutzer

    Localhost ist doch das Android-Gerät selber!? Und was willst du damit bezwecken?
     
  3. Dakine, 12.03.2012 #3
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    Danke schon mal für die fixe Antwort ;)
    Ja im Prinzip schon. Ich will vom Android-Gerät auf eine Datenbank, welche auf meinen pc läuft zugreifen(verändern). Ich hatte es auch schon mit der IP meines Pc's versucht ( 192.168.2.100) statt localhost.
     
  4. snowman2, 12.03.2012 #4
    snowman2

    snowman2 Erfahrener Benutzer

    Ist der MySQL Server gestartet? Firewall? Kannst du von einem anderen PC auf den MySQL-Server zugreifen?
     
  5. Dakine, 13.03.2012 #5
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    Ja, der MySQL Server ist gestartet. Ich habe auch schon mit einen anderen Computer eine neue Zeile in einer Tabelle hinzugefügt. Nur aus der App funktioniert es nicht.

    Aus meiner Activity wird aus irgend einem Grund die Klasse Application(die für die Verbindung verantwortlich ist) nicht aufgerufen. Kann ich in einer Activity nicht ohne weiteres einfach eine andere normale java Klasse aufrufen(eine Klasse die keine Activity ist)?

    mfg Dakine ;), danke schon mal!!!!
     
  6. Dakine, 15.03.2012 #6
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    also. hab jetzt herausgefunden das es an der Connection liegt.

    conn = DriverManager.getConnection(
    "jdbc:mysql://192.168.2.100/dbbase", "root", "root");

    Ich vermute es liegt an den treibern für jdbc. Habe schon einige ausprobiert aber keiner hat bisher funktioniert. Hat jemand Erfahrung mit jdbc connection auf sql von einem android gerät? wäre sehr hilfreich!
     
  7. Dakine, 15.03.2012 #7
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    achso ... username und passwort stimmt natürlich und sind andere die oben stehen. also nicht user: "root" pw: "root".
    was ich noch hinzufügen wollte. Von meinem PC aus funktioniert das Programm, welches noch nicht in eine Android app implementiert ist wunderbar! nur wenn ich das selbe programm in android implementier funktioniert es nicht. =(
     
  8. Sentence, 15.03.2012 #8
    Sentence

    Sentence Erfahrener Benutzer

    Dakine bedankt sich.
  9. Dakine, 15.03.2012 #9
    Dakine

    Dakine Threadstarter App-Anbieter (In-App)

    gibt es hierzu evtl ein android spezifisch gut erklärtes Tutorial? Ein deutsches wäre natürlich sehr gut. habe bisher nur komische gefunden :D danke im vorraus! ;)