2010-08-05 28 views
8

¿Hay alguna muestra? Tengo mi aplicación de Android y necesito conectarme al servidor de MySQL en mi máquina, ¿cuál es la mejor manera?Cómo conectar Android a un servidor de base de datos

que no debería usar JDBC, la explicación aquí

Nunca nunca utilice un controlador de base de datos a través de una conexión a Internet, para cualquier base de datos, para cualquier plataforma, para cualquier cliente, en cualquier sitio. Eso va doble para móvil. Los controladores de base de datos están diseñados para operaciones LAN y no están diseñados para conexiones inestables/intermitentes o alta latencia.

Y debe ir para:

DefaultHttpClient httpclient = new DefaultHttpClient(); 

Pero no hay ningún ejemplo en la forma de abrir una conexión o ejecutar una instrucción SQL simple. alguien podría ayudarme?

Respuesta

9

Debe utilizar servicios web o implementar un controlador HTTP y transferir de forma RESTful.

0

No podrá conectarse directamente a una base de datos MySQL con HttpClient, ya que la base de datos MySQL no funciona con ese protocolo.

La segunda parte de la respuesta a la pregunta que enlazó recomienda ir con los servicios web y consumirlos para comunicarse con el servidor de la base de datos. Que es exactamente lo que podría hacer con HttpClient.

+0

Por lo tanto, no es posible conectarse a MySQL usando HttpClient, así que lo que se debe utilizar en su lugar si no puedo usar JDBC ni HttpClient? – Alex

+2

Puede usar HttpClient, solo necesita escribir una aplicación web que pueda procesar la información entre el dispositivo móvil y la base de datos. Un servicio web RESTful haría lo que quieras. http://www.ibm.com/developerworks/webservices/library/ws-restful/ – LizB

+0

pero, parece que necesito un servidor web como de nivel medio, ¿es correcto? – Alex

2

Para conectarse a un servidor MySQL, necesita un cliente MySQL. Android no viene con ninguna biblioteca MySQL. Es posible que pueda tomar una biblioteca Java MySQL genérica y cambiarla para que funcione con Android, pero eso sería una gran empresa y un desperdicio de tiempo.

El enlace que señalaste ya te dijo que lo que intentas hacer está mal en primer lugar. ¡No te conectes a una base de datos en internet! Necesitará algo en su servidor que responda a las solicitudes HTTP, busque datos en la base de datos y los envíe de vuelta a través de HTTP. El enlace ya menciona algunas opciones. Incluso podría escribir algo usted mismo, aunque lo más probable es que sea más fácil usar una solución existente que tratar de hacer su propio enfoque seguro y a prueba de intrusiones.

0

Si necesita compartir datos entre varios teléfonos, le recomendaría exponerlo como un servicio web. Si solo es necesario acceder a los datos en ese teléfono en particular (y desea permanecer relacional), puede usar sqlite.

+0

Necesito transferir del teléfono a la base de datos – Alex

2

Intenté conectar DatabaseServer desde una aplicación de Android, inicialmente tuve problemas mientras estaba usando jtds, paquete jar para base de datos Driver Support, en lugar de usar jtds jar file use mysql-Connector jar file para Database Driver Support. mysql-connector archivo jar "mysql-connector-java-5.1.24-bin.jar". pon este archivo jar en la carpeta de proyectos libs.

un pequeño fragmento de código de bits:

`String url="jdbc:mysql://(IP-of databaseServer):3306/DBNAME";` 
`String driver="org.gjt.mm.mysql.Driver";` 
`String username="XYZ";//user must have read-write permission to Database 
`String password= "*********";`//user password 

`try{ 
    Class.forName(driver).newInstance();//loading driver 
    Connection con = DriverManager.getConnection(url,username,password); 
    /*once we get connection we can execute ths SQL command to Remote Database Server with the help mysql-connector driver over Internet*/ 

}`  
`catch(Exception e){ 
    e.printStackTrace(); 
}` 

espero que podría funcionar.

Cheers Rajesh P Yadav.

2

Soy un fan de Offline First, es decir, su aplicación debe ser utilizable sin conexión.

Para facilitar esto, yo recomendaría usar una base de datos local SQLite, y sincronizar a una base de datos remota cuando están en línea.

Puede usar una herramienta como SymmetricDS o Daffodil Replicator para sincronizar sus bases de datos locales y remotas a través de HTTP (S).

Cuestiones relacionadas