Acceso de Android a la base de datos SQL remota

¿Puedo acceder a una base de datos SQL remota (en un servidor web) directamente desde un programa android? Es decir, simplemente abrir la conexión con todos los parámetros necesarios y luego realizar una consulta SQL?

Este es un programa privado (no disponible para el público) que sólo está disponible en teléfonos especificados, por lo que no estoy preocupado por terceros obtener una bodega de acceso a la base de datos.

Si es así, ¿qué bibliotecas necesito en Java?

Gracias.

Esta pregunta ha aparecido varias veces. Usted PROBABLEMENTE puede conectar su dispositivo android al servidor del SQL directamente si usted desplegó los conductores de MSSQL JDBC a su dispositivo android y después expuso su servidor del SQL directamente al Internet. Si los controladores MSSQL funcionan correctamente en Android es un problema completamente diferente.

Así es como usted podría ser capaz de hacerlo. Sin embargo, aquí es por qué es una mala idea.

  1. Está exponiendo su servidor SQL directamente a Internet. A menos que cifre los datos entre su servidor MSSQL y el dispositivo android, sería relativamente fácil para un determinado hacker oler el flujo de datos TDS entre el dispositivo y MSSQL y hacer ingeniería inversa y robar sus datos. Cifrado probablemente hará que sea mucho más difícil casi imposible para un atacante para robar sus datos. Sin embargo, un atacante podría lanzar un ataque DOS / DDOS en su base de datos directamente. ¡No es Buena idea!

  2. Si está planeando conectar otros dispositivos móviles (iPhone, Symbian, BlackBerry y así sucesivamente) tendrá que ser capaz de crear una conexión SQL desde esos dispositivos también. El iPhone no es compatible con Java de forma nativa (de mi memoria) por ejemplo, por lo que tendría que encontrar una forma de conectar el iPhone con el servidor SQL. BlackBerry podría ser más fácil, pero Symbian que va a estar fuera de suerte con. Por lo tanto, necesitará crear una solución personalizada para cada dispositivo que se conecte a su base de datos. Mala Idea CARGAS de mantenimiento

Cree un servicio web o servidor TCP / IP personalizado que pueda manipular su base de datos. Conéctese a este webservice / servicio desde su dispositivo. Webservices son el camino a seguir. Más del 90% de los dispositivos en estos días son nativamente capaces de hacer una llamada de servicio web.

Creo que usted tiene que utilizar webservice para comunicarse con una base de datos SQL. Puede definir métodos generales como runSomeScalarQuery o runOneTabularQuery y … en ese servicio web y enviar respuestas a la base de datos a través de un protocolo autodefinido como un objeto autodefinido.

Es una práctica muy mala, pero si la necesita para propósitos de prueba, o ya que no tiene ninguna otra opción, todavía es posible conectarse a una base de datos externa. Y funcionará bien en la mayoría de los casos si el acceso a los datos no es demasiado pesado.

  • Descargue el controlador de aquí: http://dev.mysql.com/downloads/connector/j/3.0.html (hay algunos más nuevos, pero éste está funcionando perfectamente)
  • Si su proyecto no tiene una carpeta "libs", créelo ahora.
  • Descomprima el archivo que ha descargado y copie el archivo mysql-connector-java-3.0.17-ga-bin.jar en la carpeta libs
  • Agregalo a la ruta de construcción:
    • Haga clic con el botón derecho del ratón en el proyecto> Construir ruta> Configurar ruta de generación
    • Tab Bibliotecas> Añadir JAR
    • Vaya a la carpeta libs y seleccione el archivo jar
  • Una vez que esto esté listo, podemos seguir adelante con la programación. Como sabemos, Android nos obliga a hacer el acceso a la red en un hilo separado, por lo que tenemos que elegir una forma de crear un hilo, por ejemplo, podemos utilizar un AsynkTask , y agregar nuestro código al método doInBackground .

     private static final String url = "jdbc:mysql://{URL_SERVER}/{BASE_DATOS}"; private static final String user = "usuario"; private static final String password = "contraseña"; int count=0; try { // The newInstance() call is a work around for some broken Java implementations //this creates some static objects that we need. Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection(url, user, password); Statement st = con.createStatement(); ResultSet rs = st.executeQuery("QUERY"); while (rs.next()) { //in every iteration we have a result //if query is a Select, for instance //"select one_column, another_column from ..." //remember that rs has functions such as //rs.getString(0) //rs.getDouble(1) //etc, that get the index of the columns in the select //and cast it to the specific type //here we do whatever we need with the results, //and probably keep track of the progress with something like // publishProgress(++count); // end early if asynctask was cancel() if (isCancelled()) break; } } catch (Exception e) { e.printStackTrace(); } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.