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 progtwig de Android? es decir, ¿simplemente abre la conexión con todos los parámetros necesarios y luego realiza una consulta SQL?

Este es un progtwig privado (que no está disponible para el público) solo disponible en teléfonos específicos, por lo que no me preocupa que terceros accedan al acceso a la base de datos.

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

Gracias.

Esta pregunta ha aparecido varias veces. PROBABLEMENTE puede conectar su dispositivo Android al servidor SQL directamente si implementó los controladores MSSQL JDBC en su dispositivo Android y luego expuso su servidor SQL directamente a Internet. Si los controladores MSSQL funcionarían correctamente en Android es un problema completamente diferente.

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

  1. Está exponiendo su servidor SQL directamente a internet. A menos que encripte los datos entre su servidor MSSQL y su dispositivo Android, sería relativamente fácil para un hacker determinado oler el flujo de datos TDS entre el dispositivo y MSSQL e invertirlo y robar sus datos. El cifrado probablemente hará que sea mucho más difícil y casi imposible para un atacante robar sus datos. Sin embargo, un atacante aún podría lanzar un ataque DOS / DDOS en su base de datos directamente. ¡No es Buena idea!

  2. Si planea conectar otros dispositivos móviles (iPhone, Symbian, BlackBerry, etc.), también deberá poder crear una conexión SQL desde esos dispositivos. iPhone no admite Java de forma nativa (desde mi memoria), por ejemplo, por lo que necesitaría encontrar una forma de conectar iPhone al servidor SQL. BlackBerry podría ser más fácil, pero Symbian no va a tener suerte. Por lo tanto, deberá crear casi una solución personalizada para cada dispositivo que se conecte a su base de datos. Bad Idea CARGAS de mantenimiento

Cree un servicio web o un servidor TCP / IP personalizado que pueda manipular su base de datos. Conéctese a este servicio / servicio web desde su dispositivo. Los servicios web son el camino a seguir. Más del 90% de los dispositivos actualmente son nativamente capaces de realizar una llamada al servicio web.

Creo que debes usar el servicio web para comunicarte 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 auto definido como un objeto auto definido.

Es una práctica muy mala, pero si la necesita para fines de prueba o si no tiene otra opción, aún 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 desde aquí: http://dev.mysql.com/downloads/connector/j/3.0.html (hay algunos más nuevos, pero este funciona a la perfección)
  • si su proyecto no tiene una carpeta “libs”, créelo ahora.
  • descomprime el archivo que descargaste y copia el archivo mysql-connector-java-3.0.17-ga-bin.jar a la carpeta libs
  • agréguelo a la ruta de comstackción:
    • Haga clic derecho en el proyecto> Ruta de comstackción> Configurar ruta de comstackción
    • Bibliotecas de tabs> Agregar JAR
    • Navegue a la carpeta libs y seleccione el archivo jar
  • Una vez que esto esté listo, podemos continuar con la progtwigción. Como sabemos, Android nos obliga a hacer el acceso a la red en un hilo separado, por lo que debemos elegir una forma de crear un Thread, por ejemplo, podemos usar 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(); }