tutorial - ¿Puede una aplicación de Android conectarse directamente a una base de datos en línea mysql
sincronización de bd sqlite con mysql en android (8)
Android 3.3 API 18
Hola,
Estoy desarrollando mi primera aplicación usando Android. La aplicación deberá conectarse a una base de datos en línea para almacenar los datos del usuario.
Estoy buscando un almacenamiento en la nube con una base de datos MySQL incluida. Sin embargo, ¿puede mi aplicación conectarse directamente a esta base de datos MySQL y extraer y extraer datos de ella? ¿O hay otras cosas que debo hacer?
Muchas gracias por las sugerencias,
En realidad es muy fácil. Pero no hay manera de que pueda lograrlo directamente. Debe seleccionar una tecnología del lado del servicio. Puedes usar cualquier cosa para esta parte. Y esto es lo que llamamos una API RESTful o una API SOAP. Depende de usted qué seleccionar. He hecho muchos proyectos con ambos. Yo preferiría RESTO. Entonces, ¿qué pasará? Tendrás algunas secuencias de comandos en tu servidor web y conocerás las URL. Por ejemplo, necesitamos hacer un registro de usuario. Y para esto tenemos
mydomain.com/v1/userregister.php
Ahora, desde el lado de Android, enviará una solicitud HTTP a la URL anterior. Y la URL anterior manejará el registro de usuario y le dará una respuesta que indique si la operación tiene éxito o no.
Para una explicación detallada completa del concepto anterior. Puedes visitar el siguiente enlace.
** Tutorial de Android MySQL para realizar la operación CRUD **
Lo que quieres hacer es una mala idea. Te solicitará que incorpores tu nombre de usuario y contraseña en la aplicación. Esta es una muy mala idea, ya que es posible realizar una ingeniería inversa de su APK y obtener el nombre de usuario y la contraseña para este servidor mysql que se enfrenta públicamente, que puede contener datos sensibles del usuario.
Sugeriría hacer un servicio web para actuar como un proxy para el servidor mysql. Supongo que los usuarios deben iniciar sesión, por lo que podría usar su nombre de usuario / contraseña para autenticarse en el servicio web.
Mire este backend en línea.
Ofrecen notificaciones automáticas, integración social, almacenamiento de datos y la capacidad de agregar una rica lógica personalizada al backend de su aplicación con Cloud Code.
Puede usar PHP, JSP, ASP o cualquier otra secuencia de comandos del lado del servidor para conectarse con la base de datos mysql y devolver los datos JSON que puede analizar en su aplicación de Android AndroidHive
Sí, definitivamente puede conectarse a la base de datos en línea de MySql para lo que necesita para crear un servicio web. Este servicio web le proporcionará acceso a la base de datos MySql. Luego puede extraer y enviar datos fácilmente a la base de datos MySql. PHP será una buena opción para crear un servicio web, es simple de implementar. Buena suerte...
Si tu puedes hacerlo.
Materiales que necesitas:
- Servidor web
- Una base de datos almacenada en el servidor web
- Y un poco de conocimiento de Android :)
- Servicios web (json, Xml ... etc.) con los que te sientas cómodo
1. Primero configura los permisos de internet en tu archivo de manifiesto
<uses-permission android:name="android.permission.INTERNET" />
2. Haz una clase para hacer una HTTPRequest desde el servidor (estoy usando json parisng para obtener los valores)
por ejemplo:
public class JSONfunctions {
public static JSONObject getJSONfromURL(String url) {
InputStream is = null;
String result = "";
JSONObject jArray = null;
// Download JSON data from URL
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
// Convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "/n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
try {
jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
return jArray;
}
}
3. En su MainActivity
Haga un objeto de la clase JsonFunctions
y pase la url como un argumento desde donde desea obtener los datos
p.ej:
JSONObject jsonobject;
jsonobject = JSONfunctions.getJSONfromURL("http://YOUR_DATABASE_URL");
4. Y luego, finalmente, lee los jsontags y almacena los valores en un arraylist y luego muéstralo en listview si quieres
y si tienes algún problema puedes seguir este blog que da excelentes tutoriales Android AndroidHive
Dado que la respuesta anterior que escribí fue hace mucho tiempo atrás y ahora HttpClient
, HttpPost
, HttpEntity
se han eliminado en Api 23. Puede utilizar el siguiente código en build.gradle (nivel de la aplicación) para seguir usando org.apache.http
en su proyecto.
android {
useLibrary ''org.apache.http.legacy''
signingConfigs {}
buildTypes {}
}
o puede usar HttpURLConnection
como a continuación para obtener su respuesta del servidor
public String getJSON(String url, int timeout) {
HttpURLConnection c = null;
try {
URL u = new URL(url);
c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.connect();
int status = c.getResponseCode();
switch (status) {
case 200:
case 201:
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"/n");
}
br.close();
return sb.toString();
}
} catch (MalformedURLException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}
o puede usar la Biblioteca de terceros como Volley
, Retrofit
para llamar a la API del servicio web y obtener la respuesta y luego analizarla con FasterXML-jackson
, google-gson
.
definitivamente puede hacer esa aplicación, necesita hacer una conexión http a la base de datos, llamando a un script php que en respuesta ejecutará consultas específicas de acuerdo con su proyecto, y generará el resultado en forma de formato xml o json, que puede se mostrará en su aplicación de Android !. para un tutorial completo sobre cómo conectar la aplicación de Android a mysql , recomendaría echar un vistazo a este tutorila
paso 1: crea un servicio web en tu servidor
paso 2: haga que su aplicación realice una llamada al servicio web y reciba conjuntos de resultados