Conexión a MySQL desde Android con JDBC

Utilicé el siguiente código para conectar MySQL en localhost de Android. Sólo muestra las acciones dadas en la sección de captura. No sé si es un problema de conexión o no.

 package com.test1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Test1Activity extends Activity { /** Called when the activity is first created. */ String str="new"; static ResultSet rs; static PreparedStatement st; static Connection con; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TextView tv=(TextView)findViewById(R.id.user); try { Class.forName("com.mysql.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://10.0.2.2:8080/example","root",""); st=con.prepareStatement("select * from country where id=1"); rs=st.executeQuery(); while(rs.next()) { str=rs.getString(2); } tv.setText(str); setContentView(tv); } catch(Exception e) { tv.setText(str); } } } 

Cuando este código se ejecuta muestra "nuevo" en el avd.

 java.lang.management.ManagementFactory.getThreadMXBean, referenced from method com.mysql.jdbc.MysqlIO.appendDeadlockStatusInformation Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom 

¿Alguien puede sugerir alguna solución? Y gracias de antemano

No puedes acceder a un BD de MySQL de forma nativa. EDIT: En realidad puede ser capaz de utilizar JDBC, pero no se recomienda (o no puede funcionar?) … ver Android JDBC no funciona: ClassNotFoundException en el controlador

Ver

http://www.helloandroid.com/tutorials/connecting-mysql-database

http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/8339-connect-android-mysql-database-tutorial.html

Android no puede conectarse directamente al servidor de base de datos. Por lo tanto, necesitamos crear un servicio web simple que pasará las solicitudes a la base de datos y devolverá la respuesta.

http://codeoncloud.blogspot.com/2012/03/android-mysql-client.html

Para la mayoría de los [buenos] usuarios esto podría estar bien. Pero imagina que consigues a un hacker que consigue un asimiento de tu programa. He descompilado mis propias aplicaciones y su miedo lo que he visto. ¿Qué pasa si reciben su nombre de usuario / contraseña a su base de datos y causar estragos? Malo.

Este código se ejecuta de forma permanente! Creado por diko (Turkey)

 public void mysql() { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } thrd1 = new Thread(new Runnable() { public void run() { while (!Thread.interrupted()) { try { Thread.sleep(100); } catch (InterruptedException e1) { } if (con == null) { try { con = DriverManager.getConnection("jdbc:mysql://192.168.1.45:3306/deneme", "ali", "12345"); } catch (SQLException e) { e.printStackTrace(); con = null; } if ((thrd2 != null) && (!thrd2.isAlive())) thrd2.start(); } } } }); if ((thrd1 != null) && (!thrd1.isAlive())) thrd1.start(); thrd2 = new Thread(new Runnable() { public void run() { while (!Thread.interrupted()) { if (con != null) { try { // con = DriverManager.getConnection("jdbc:mysql://192.168.1.45:3306/deneme", "ali", "12345"); Statement st = con.createStatement(); String ali = "'fff'"; st.execute("INSERT INTO deneme (name) VALUES(" + ali + ")"); // ResultSet rs = st.executeQuery("select * from deneme"); // ResultSetMetaData rsmd = rs.getMetaData(); // String result = new String(); // while (rs.next()) { // result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n"; // result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n"; // } } catch (SQLException e) { e.printStackTrace(); con = null; } try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } else { try { Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } } }); } 

Si u necesidad de conectar su aplicación a un servidor que puede hacerlo a través de PHP / MySQL y JSON http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ .Mysql El código de conexión debe estar en la clase AsynTask. No lo ejecute en el hilo principal.

¿Desea mantener su base de datos en dispositivos móviles? Utilice sqlite en lugar de mysql.

Si la idea es mantener la base de datos en el servidor y el acceso desde el móvil. Utilice un servicio web para buscar / modificar datos.

Otra solución es utilizar un controlador JDBC virtual que utilice una arquitectura de tres niveles: su código JDBC se envía a través de HTTP a un Servlet remoto que filtra el código JDBC (configuración y seguridad) antes de pasarlo al controlador MySQL JDBC. El resultado es enviado de vuelta a través de HTTP. Hay algunos software libre que utilizan esta técnica. Sólo Google "Android JDBC Driver sobre HTTP".

 public void testDB() { TextView tv = (TextView) this.findViewById(R.id.tv_data); try { Class.forName("com.mysql.jdbc.Driver"); // perfect // localhost /* * Connection con = DriverManager .getConnection( * "jdbc:mysql://192.168.1.5:3306/databasename?user=root&password=123" * ); */ // online testing Connection con = DriverManager .getConnection("jdbc:mysql://173.5.128.104:3306/vokyak_heyou?user=viowryk_hiweser&password=123"); String result = "Database connection success\n"; Statement st = con.createStatement(); ResultSet rs = st.executeQuery("select * from tablename "); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { result += rsmd.getColumnName(1) + ": " + rs.getString(1) + "\n"; } tv.setText(result); } catch (Exception e) { e.printStackTrace(); tv.setText(e.toString()); } } 

Intente cambiar en el archivo gradle el targetSdkVersion a 8

 targetSdkVersion 8 
  • Firebase Big query - Cómo recuperar los datos de la tabla Eventos personalizados
  • Convierta un sitio web con un diseño de respuesta a la aplicación de Android
  • Colocación de varias tablas / columnas en un archivo CSV
  • Sincronizar SQLite DB en la aplicación android con el DB remoto de MySQL
  • Sincronizar las bases de datos sqlite con mysql
  • almacenar y recuperar la imagen del servidor WAMP usando android
  • ¿Dónde ejecutar algoritmos complejos? Lado del servidor o lado del cliente?
  • No se puede ver la respuesta JSON de php en android
  • No se puede insertar correctamente caracteres griegos en la base de datos mysql
  • Conectando MySql con Android sin usar PHP
  • ¿Cómo conectar el teléfono de android a un servicio de la tela funcionado en el servidor local?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.