Autore Topic: Accesso al database mysql  (Letto 957 volte)

Offline AmboSE87

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3 - Galaxy S2 - Galaxy Tab P1000
  • Sistema operativo:
    Windows 7 - Ubuntu 12.04
Accesso al database mysql
« il: 08 Settembre 2012, 21:10:19 CEST »
0
Mi ero ripromesso di non venire a rompere ancora le scatole ma non riesco proprio a spuntarla.

Dopo aver chiarito grazie a Richy il metodo di importazione di una libreria mi trovo a non riuscire a connettermi al database, infatti mi esce il seguente messaggio:

Codice: [Seleziona]
09-08 21:00:36.110: I/System.out(11391): test
09-08 21:00:36.195: I/System.out(11391): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
09-08 21:00:36.195: I/System.out(11391): The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.


Dal telefono ho provato con applicazioni di connessione a mysql è funziona tutto bene, (questo per verificare che non ci fossero problemi di accettazione di connessioni remote da parte del server db), inoltre ho preso lo stesso codice (che è un codice copiato da internet  :-P) è ho creato un'applicazione java da far girare in locale e.... funziona!!!  >:(

Sia sul db locale (windows) che sul mio server (linux Ubuntu).

Cercando l'errore su google, ho trovato solo riferimenti ai file di configurazione sull'accesso remoto del db, ma non è il mio caso.

vi posto il codice:

Codice (Java): [Seleziona]
 try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn =
                DriverManager.getConnection(
                    "jdbc:mysql://10.0.0.88:3306/test?" + "user=root&password=mysqlpwd"
                );
            Statement stmt;
            PreparedStatement pstmt;
            ResultSet rs;
            // creo la tabella
            stmt = conn.createStatement();
            stmt.executeUpdate("DROP TABLE IF EXISTS students");
            stmt.executeUpdate("CREATE TABLE students " +
                    "(id INTEGER primary key auto_increment, " +
                    "firstname TEXT NOT NULL, " +
                    "lastname TEXT NOT NULL)");
 
            // inserisco due record
            pstmt = conn.prepareStatement("INSERT INTO students " +
                    "(firstname, lastname) values (?,?)");
            pstmt.setString(1, "pippo");
            pstmt.setString(2, "Rossi");
            pstmt.execute();
            pstmt.setString(1, "Marco");
            pstmt.setString(2, "Bianchi");
            pstmt.execute();
            // recupero i dati
            rs = stmt.executeQuery("SELECT * from students");
            while(rs.next())
            {
                System.out.println("id: " + rs.getString("id"));
                System.out.println("firstname: " + rs.getString("firstname"));
                System.out.println("lastname: " + rs.getString("lastname"));
                System.out.println("--------------------------------------");
            }
            pstmt.close(); // rilascio le risorse
            stmt.close(); // rilascio le risorse
            conn.close(); // termino la connessione
        }
        catch(ClassNotFoundException e)
        {
            System.out.println(e);
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }


potrei dover aggiungere dei permessi particolari al manifest.xml?

ecco i permessi attualmente settati:

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>

Per il momento vi ringrazio

Offline presidente74

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
Re:Accesso al database mysql
« Risposta #1 il: 28 Novembre 2012, 09:32:58 CET »
0
mi ritrovo con lo stesso problema!
più specificatamente:
1) con "10.0.2.2:3306" oppure "192.168.1.2:3306" (l'indirizzo di un terzo pc con installato il server MySQL) come indirizzo, anche omettendo il numero di porta, mi restituisce l'eccezione di cui sopra con "The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server". se scrivo "localhost" oppure "localhost:3306", mi restituisce "Exception: could not create connection to database server". vorrei capire cosa sbaglio e se davvero l'emulatore si connette, ma non riceve segnali dal server.
2) vorrei, se possibile, capire come gestisce le connessioni di rete il so android e come gestirle da codice. cosa bisogna attivare? come bisogna configurare eclipse? Perché non riesco a configurare il wireless (la componente che deve effettuare il collegamento in rete)? Nelle impostazioni, infatti, trovo solo il bluetooth e le reti mobili.

ovviamente sono ben gradite anche fonti dove posso reperire materiale.

Utilizzo Eclipse IDE for Java Developers, versione: Indigo Service Release 2 - Build id: 20120216-1857

grazie