2013-04-02 15 views
13

Sto facendo un'applicazione Android utilizzando JDBC per inviare dati al database senza utilizzare alcun servizio web. Ho fatto un esperimento utilizzando l'emulatore Android 2.2 e sono in grado di inviare dati al DB MySQL (LOCALHOST). Dopo che ho provato a inviare utilizzando il dispositivo Android 2.2, ho cambiato il percorso da jdbc:mysql://10.0.2.2:3306/ con jdbc:mysql://xx.xx.xx.xx:3306/.Android: JDBC è supportato nei dispositivi Android?

xx.xx.xx.xx è da ipconfig della mia macchina localhost. Ma non funziona nel dispositivo. Quale potrebbe essere la ragione.

dubbi principali:

  1. dispositivi Android Do attualmente supportano JDBC?
  2. Android 2.2 supporta JDBC?
  3. Se supportato, quali versioni di Android supporteranno JDBC?
+0

Ecco! Nessuno dei tuoi dubbi menzionati è la causa del tuo problema, per favore vedi la mia risposta. – Behnam

risposta

10

Sì. È necessario ricordare di inserire il codice di connessione JDBC in un AsyncTask, altrimenti si BRUCIA BRUCIA BRUCIA!

+1

Inoltre NON scambiare l'autorizzazione "INTERNET" per il permesso "usa INTERNET". È necessario che quest'ultimo esegua JDBC. – Behnam

1

Scarica MySQL JDBC Connector 3.0.17 e aggiungilo nel percorso di generazione del progetto Android.

import java.sql.Connection; 



import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.Statement; 
import android.app.Activity; 

import android.os.Bundle; import android.widget.TextView;

public class MysqlSample01Activity extends Activity { 

private static final String url = "jdbc:mysql://<server>:<port>/<database>"; 
private static final String user = "<username>"; 
private static final String pass = "<password>"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    testDB(); 
} 

public void testDB() { 
    TextView tv = (TextView)this.findViewById(R.id.text_view); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, user, pass); 
     /* System.out.println("Database connection success"); */ 

     String result = "Database connection success\n"; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery("select * from table_name"); 
     ResultSetMetaData rsmd = rs.getMetaData(); 

     while(rs.next()) { 
      result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; 
      result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; 
      result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n"; 
     } 
     tv.setText(result); 
    } 
    catch(Exception e) { 
     e.printStackTrace(); 
     tv.setText(e.toString()); 
    } 

} 

}

+0

Già ho aggiunto il file JAR e ho fatto come il tuo esempio. Ma dal dispositivo non funziona. Come posso dare il percorso nel dispositivo. – sachi

+2

Forse il tuo IP è bloccato dal tuo firewall u devi aggiungere un'eccezione nell'impostazione del firewall e deve port forwarder se stai usando il router – Akilan

+1

Se uso questo tipo di codice, vuol dire che qualcuno può decompilare la mia app e trovare l'ip, port, dbname, user e password out? –

0

suona come l'installazione di MySQL permette solo connessioni da host locale. Aggiorna la tua configurazione di Mysql per consentire le connessioni da qualsiasi host.

Da quello che posso vedere java.sql è supportato dal livello 1 dell'API e credo che il supporto verrà rimosso in qualsiasi momento presto.

/Thomas

1

Is dispositivi Android supportano JDBC.

Android 2.2 supporta JDBC.

Se supportato, quali versioni di Android supporteranno JDBC.

NO Android non supporta localmente database MySQL in modo da non possiamo utilizzare la connessione JDBC frmo dispositivo Android, il suo sostegno solo database SQLite.

e se si desidera utilizzare il database dal server, è sufficiente creare un servizio Web per esso, tutta la connessione del database quindi gestita dal server.

tuttavia il suo aiuto per capire JDBC e Android orribili !! SO Question

+0

Ho bisogno di usare il DB MySQL remoto. Non desidero effettuare alcuna chiamata al servizio web. – sachi

+0

@sachi vedi ho modificato la mia domanda !! – dhams

Problemi correlati