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.
- No se puede ver la respuesta JSON de php en android
- No se puede rellenar Spinner con datos de la base de datos de servidor remoto
- Cómo hacer que la aplicación de Android se comunique con db de MySQL externo
- ¿Cómo se conectan las aplicaciones Android populares a un servidor?
- Mejor tutorial para android PHP y mysql
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
- Lado del servidor Routeboxer
- ¿Cómo conectar el teléfono de android a un servicio de la tela funcionado en el servidor local?
- Android - La mejor manera de sincronizar SQLite con MySQL
- NameValuePair Error "NameValuePair no se puede resolver con un tipo"
- Tener un error mySQL, columna desconocida where clause
- Forzar a los usuarios a tener la última versión de la aplicación para Android
- Sesión de manejo en android mientras se registra en el lado del servidor en php
- ¿Cómo sincronizar la base de datos SQLite en el teléfono Android con la base de datos MySQL en el servidor?
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
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
- ¿Emisión si un dispositivo bluetooth está conectando / desconectando?
- Uso del SDK de Android no veo ningún EXIF en mi JPEG