You are on page 1of 21

Download Android Apps

www.mobogenie.com/Android-Manager Get All Your Favorite Apps & Games Instantly for Android Phone, Tablet
Nue vo usuario Principal Inicio : De scargas : Trucos VB.Ne t, PHP, De lphi : Manuale s : C digo Fue nte

Seguir a @ajpdsoft

3,170 seguidores

Me gusta

Compartir

743

Inicio Buscar C ontactar De scargas Enciclope dia Estadsticas Eve ntos Foros Manuale s, Artculos Nue stra historia Q ui ne s som os R e com i ndanos Te m as Top 10 Trucos De lphi, PHP, Java, Visual Studio Tu cue nta

Eclipse : Acceso a MySQL desde Android con Eclipse, Java y JDBC

Ex plicam os e n e ste tutorial cm o acce de r de sde un dispositivo con siste m a Android a un se rvidor de base de datos MySQ L Se rve r. Para e llo usare m os e l de sarrollo Eclipse , Java y JDBC para la cone x in. R e alizare m os una cone x in dire cta sin ne ce sidad de usar un se rvidor we b con PHP, ni JSO N ni nada por e l e stilo. Ade m s, e ste m todo se rvir para cualquie r base de datos que adm ita JDBC . Ex plicam os cm o cre ar una aplicacin Android de sde ce ro, paso a paso.

Descargas ltim as De scargas AjpdSoft Ge stin Se guidore s Twitte r C # AjpdSoft Inform acin PC W MI e n VB.Ne t AjpdSoft Acce so Postgre SQ L con Lazarus x 64 Eje m plo acce so nativo a SQ Lite con ADO .Ne t e n C # .Ne t AjpdSoft Acce so MySQ L Android AjpdSoft Acce so SQ Lite C # ADO .NET AjpdSoft Acce so MySQ L con ADO .NET e n C # AjpdSoft Ge stin Inte gral cdigo fue nte De lphi Trminos enciclopedias AjpdSoft Inde x ar Te x to PDF C # iTe x tSharp AjpdSoft C apturar Pantalla C # AjpdSoft Ge stin de Transporte s Fiche ros instalacin m anual AjpdSoft Se parar Pginas PDF cdigo fue nte C # C Sharp .Ne t AjpdSoft C onve rtir Te x to a PDF cdigo fue nte VB.Ne t AjpdSoft Ge ne rador y Le ctor cdigos Q R VB.Ne t AjpdSoft Sock e t VB.Ne t Lo m s de scargado ltim os AjpdSoft R e gistro de cha, DATE_FO R MAT(fe O C X y DLL form C digo ato) Fue nte De lphi Enc.: Funcione s MySQ L AjpdSoft Ge de ne SOrador AP cdigos de barras Enc.: Inform tica Borland Database C SR F De sk top 7.0Inform tica Enc.: Eventos AjpdSoft C onve rsor SIG Enero He x ade cim al, De cim al, Enc.: Inform tica Te x to - C digo Fue nte D lphi L M M J V S De R uby 1 2 3 4 Enc.: Inform tica AjpdSoft Aviso cam bio 5 pblica 6 7 8 9 10 11 IP DATEDIFF (fe cha1, fe cha2) Funcione MySQ 12 Enc.: 13 14 15 16s 17 18 L AjpdSoft Adm inistracin Base s de Datos C 19 20 DaysBe 21 22 twe 23 e ndigo (fe 24cha1, 25 Fue nte De lphi fe cha2) 26 Enc.: 27 28 29 30 s 31 Funcione De lphi AjpdSoft Inve ntario PC s Te lne t AjpdSoft Facturacin Enc.: Inform tica C digo Fue Consejos nte De lphi O SI AjpdSoft Pue rto tica Enc.: Inform

Introduccin, ante ce de nte s, Android y base s de datos. R e quisitos para de sarrollar aplicacin para dispositivos Android con Eclipse . Entorno de de sarrollo de aplicacione s para Android con Eclipse . Equipo o se rvidor con MySQ L Se rve r. Aadir proye cto Android a Eclipse para aplicacin acce so MySQ L, cre ar activity principal y m e n. Aadir se gundo activity para introduccin de los datos de cone x in con se rvidor MySQ L. De scargar y aadir JDBC a proye cto Eclipse para acce so a MySQ L de sde Android. Eje m plo acce so a BD MySQ L de sde Android con JDBC y Eclipse . C digo Java aplicacin AjpdSoft Acce so MySQ L Android. Aplicacin Android AjpdSoft Acce so MySQ L e n funcionam ie nto. Publicar aplicacin Android e n Google Play. Artculos re lacionados. C r ditos.

Introduccin, antecedentes, Android y bases de datos


La cone x in dire cta a una base de datos MySQ L, Postgre SQ L, O racle , SQ L Se rve r, Fire bird, e tc. de sde un dispositivo con siste m a Android (m vil, table t) e s pe rfe ctam e nte posible . En m uchos sitios we b he m os le do que Android slo adm ite acce so a base s de datos SQ Lite y e sto e s un e rror. Lo que s e s cie rto e s que e l propio siste m a Android, com o tal, slo adm ite trabajar de form a inde pe ndie nte (sin un se rvidor de base de datos e x te rno) con base de datos SQ Lite . Lo que quie re de cir que e n nue stro m vil o table t con Android no podre m os instalar un se rvidor de MySQ L, O racle , Postgre SQ L, e tc. Por lo tanto lo que e x plicare m os e n e ste tutorial se r cm o acce de r y trabajar con una base de datos e x te rna al dispositivo Android usando la cone x in de re d o de Inte rne t. No ne ce sitare m os hace r ningn tipo de instalacin adicional e n nue stro dispositivo Android, m s all de nue stra propia aplicacin, no ne sitare m os re alizar tunne ling, ni usar PHP, ni JSO N ni nada por e l e stilo. El nico re quisito e s que la aplicacin de sarrollada e n Android re que rir de pe rm iso para acce so a Inte rne t, nada m s. Y, por supue sto, ne ce sitare m os de un se rvidor de base s de datos e x te rno al que acce de re m os de sde Android. R e pe tim os para aclarar las dudas al re spe cto: Android slo adm ite de form a local trabajar con base s de datos SQ Lite , la base de datos re sidir e n e l dispositivo m vil con Android. Pe ro Android, pue sto que cue nta con com pilador Java y todo lo que e llo conlle va, adm ite pe rfe ctam e nte trabajar con cualquie r m otor de base de datos que pe rm ita acce so m e diante JDBC . En e ste ltim o caso la base de datos, obviam e nte , re sidir e n un se rvidor e x te rno con W indows o Linux com o siste m a ope rativo y e l dispositivo acce de r a dicho se rvidor m e diante la cone x in de re d o Inte rne t. En e l siguie nte tutorial e x plicam os cm o trabajar con base s de datos SQ Lite de sde Android: De sarrollar aplicacin Android con acce so a base de datos SQ Lite con Eclipse Por supue sto, cada de sarrollador e stim ar qu m todo usar para cone ctar una aplicacin Android con un m otor de base de datos e x te rno, pue de e stim ar usar JSO N, nosotros no de cim os que no se haga as, slo de cim os que pue de re alizarse una cone x in dire cta de sde Android a MySQ L usando JDBC y Java e x plicare m os a continuacin.

Requisitos para desarrollar aplicacin para dispositivos Android con Eclipse


Entorno de desarrollo de aplicaciones para Android con Eclipse
En e l siguie nte e nlace m ostram os un tutorial donde e x plicam os paso a paso cm o instalar Eclipse y cm o pre parar e l e ntorno para de sarrollar aplicacione s para dispositivos con Android e n Linux : Mi prim e ra aplicacin Android con Eclipse e n Linux , instalar Eclipse Ubuntu. Para Microsoft W indows 8: Montar e ntorno de program acin para Android con Eclipse e n W indows 8.

Equipo o servidor con MySQL Server


C om o ya he m os com e ntado ne ce sitare m os dispone r de un se rvidor de MySQ L, e n los siguie nte s tutoriale s e x plicam os cm o instalarlo sobre W indows y Linux : C m o instalar MySQ L Se rve r e n W indows XP. Se rvidor we b con Ubuntu Se rve r 12 y LAMP Se rve r Apache PHP MySQ L. Instalar Linux Ubuntu Se rve r 11 x 64, Apache , MySQ L, Postgre SQ L, Tom cat, W e bm in. C m o instalar MySQ L Se rve r e n Linux y pe rm itir cone x ione s re m otas. Instalar y configurar MySQ L Se rve r 5 e n Linux Suse 10. C m o instalar MySQ L Se rve r 6.0 Alpha e n W indows XP.

Aadir proyecto Android a Eclipse para aplicacin acceso MySQL, crear activity principal y men
En prim e r lugar, si an no lo te ne m os cre ado, cre are m os un nue vo proye cto e n Eclipse , para e llo lo abrire m os y pulsare m os e n e l m e n "File " - "Ne w" - "Proje ct":

De sple gare m os "Android" y se le ccionare m os "Android Application Proje ct":

Introducire m os los datos para e l nue vo proye cto Eclipse para dispositivos Android: A pplication Name : nom bre de la aplicacin, no re com e ndam os nom bre s m uy largos pue s de lo contrario no cabrn e n los ttulos y de m s donde apare zcan. En nue stro e je m plo la llam are m os "Acce soMySQ L". Project Name : nom bre de l nue vo proye cto Eclipse Android, por e je m plo "AjpdSoftMySQ L". Package Name : nom bre de l paque te , por e je m plo "com .e x am ple .ajpdsoftm ysql". Buil SDK: API le ve l con e l que se com pilar la aplicacin, por e je m plo "Android 4.1 (API 16). Minimun Required SDK: e ste cam po e s im portante , de be re m os indicar e l API le ve l m nim o re que rido, a m ayor API Le ve l m e nor nm e ro de dispositivos Android soportarn nue stra aplicacin. Por lo tanto de be re m os indicar e l API le ve l m s pe que o posible , se gn los proce dim ie ntos que use m os y los im ports re que rire m os uno u otro. En nue stro caso e l API Le ve l m nim o se r 5 (API 5: Android 2.0 (Eclair). Create custom launcher icon: si que re m os que e l asiste nte nos pe rm ita cre ar un icono para nue stra aplicacin m arcare m os e ste che ck . Create Project in Workspace : m arace re m os e sta opcin para cre ar e l nue vo proye cto Android e n e l e spacio de trabajo de l usuario por de fe cto. Tras introducir los datos para e l nue vo proye cto Eclipse para dispositivos Android pulsare m os "Ne x t":

Lenguajes Se le cciona Idiom a de la Inte rfaz:

Spanish

Webs recomendadas O rasite .com

Si he m os se le ccionado la opcin de cre ar un icono para la aplicacin, e l asiste nte nos m ostrar la ve ntana para cre ar e l icono pe rsonalizado, podre m os cam biar e l icono, cam biar color de fondo y otras opcione s:

C oloca tu we b aqu

Language english English

Marcare m os "C re ate Activity" para cre ar una activity (ve ntana) principal de la aplicacin, se le ccionare m os e l tipo de activity que cre are m os, e n nue stro caso "Blank Activity":

Introducire m os los datos para la nue va activity: A ctivity Name : nom bre de l activity (ve ntana), por e je m plo "AjdSoftMySQ L". Layout Name : nom bre de l fiche ro x m l que conte ndr los com pone nte s visuale s de la activity, por e je m plo "activity_ajpd_soft_m y_sql". Navitagion Type : podre m os e le gir aqu e l tipo de nave gacin para la nue va actividad, las opcione s: Tabs, Tabs + Swipe , Swipe Vie ws + Title Strip y Dropdown. Estos tipos de nave gacin re que rirn API Le ve l iguale s o supe riore s a la 14. Title : ttulo para la activity, por e je m plo "Acce so MySQ L". Para m s inform acin sobre los activity de Android pod is vistar e ste tutorial: Aadir ve ntanas a aplicacin Android con Eclipse y Java, trabajar con Activity. Tras introducir los datos para e l activity pulsare m os "Finish" para cre ar e l proye cto:

El asiste nte para aadir un nue vo proye cto Eclipse para dispositivos Android cre ar todos los fiche ros ne ce sarios para e l proye cto, a continuacin indicam os algunos de los m s im portante s:

/src/A jpdSoftMySQL.java : cdigo java de la activity principal de l proye cto. En e ste fiche ro colocare m os todo e l cdigo java de nue stra aplicacin Android, al m e nos todo e l que te nga que ve r con su activity corre spondie nte . /bin/A ndroidManifest.xml: fiche ro de configuracin principal de la aplicacin donde se indicarn, por e je m plo, todas las activity de la aplicacin. /res/drawable-hdpi, /re s/drawable -ldpi, /re s/drawable -m dpi, /re s/drawable -x hdpi: carpe tas de l proye cto donde se guardarn los fiche ros de im ge ne s (iconos y de m s) para las dife re nte s re solucione s. /res/layout/activity_ajpd_soft_my_sql.xml: carpe ta y fiche ro para e l layout, donde se indicarn los com pone nte s grficos de l activity re lacionado, e n e ste fiche ro indicare m os todo lo que e l usuario ve r e n la aplicacin Android de su m vil. /res/menu/activity_ajpd_soft_my_sql.xml: carpe ta y fiche ro con los datos ne ce sarios para m ostrar e l m e n de nue stra aplicacin, lo usare m os para m ostrar e l se gundo activity que cre are m os poste riorm e nte para indicar los datos de cone x in con e l se rvidor MySQ L. /res/values/strings.xml: e n e ste fiche ro indicare m os todas las cade nas de te x to que se m ostrarn al usuario e n los m e ns, botone s, e tique tas, m e nsaje s, e tc. El asiste nte nos de jar la pe staa de l layout abie rta, para e dicin e n m odo grfico, aadire m os al layout de l activity principal de la aplicacin los siguie nte s com pone nte s: De la pale ta "Form W idge ts" aadire m os un "Spinne r", e n e ste de sple gable m ostrare m os los catlogos (base s de datos) de l se rvidor de MySQ L al que nos cone cte m os. De la pale ta "Form W idge ts" aadire m os un Button, e ste botn se r e l que pulse e l usuario para obte ne r los catlogos de l se rvidor MySQ L. De la pale ta "Te x t Fie lds" aadire m os un "EditTe x t" m ultilne a (Multiline Te x t), e n e ste cam po e l usuario podr introducir la consulta SQ L a e je cutar contra e l se rvidor MySQ L. De la pale ta "Form W idge ts" aadire m os un "C he ck Box ", e n e ste che ck e l usuario m arcar si e s una consulta de se le ccin (SELEC T, DESC , SHO W ) o e s una consulta de m odificacin de datos (INSER T, UPDATE, DR O P,C R EATE, ALTER ). De la pale ta "Form W idge ts" aadire m os un Button, e ste botn se r e l que pulse e l usuario para e je cutar la consulta SQ L. De la pale ta "Te x t Fie lds" aadire m os un "EditTe x t" m ultilne a (Multiline Te x t), e n e ste cam po la aplicacin de volve r e l re sultado de la e je cucin de laconsulta SQ L. De la pale ta "Te x t Fie lds" aadire m os un "Te x tVie w" e n e l que m ostrare m os un te x to de aviso al usuario para que , si la consulta SQ L e s grande , use la clusula LIMIT para lim itar los re gistros a m ostrar y que la aplicacin no se rale ntice e n e x ce so.

Todos e stos datos visuale s se guardarn e n e l fiche ro /res/layout/activity_ajpd_soft_my_sql.xml, e n nue stro caso te ndr e ste conte nido: xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/lsCatalogos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/btCatalogos" /> android:id="@+id/txtSQL" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/lsCatalogos" android:ems="10" android:hint="@string/text_SQL_Ejecutar" android:inputType="textMultiLine" > android:id="@+id/txtResultadoSQL" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/btEjecutar" android:ems="10" android:inputType="textMultiLine|none" /> android:id="@+id/btCatalogos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/lsCatalogos" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="@string/text_catalogos" /> android:id="@+id/btEjecutar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/txtSQL" android:text="@string/text_ejecutar" /> android:id="@+id/opConsultaModificacion" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btEjecutar" android:layout_alignBottom="@+id/btEjecutar" android:layout_alignParentLeft="true" android:text="@string/text_consulta_seleccion" /> android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/txtResultadoSQL" android:text="@string/text_aviso_SQL" />

El conte nido de l fiche ro donde se guardarn todas las cade nas de te x to que usare m os e n la aplicacin " res/values/strings.xml": Acceso MySQL Configuracin

Acceso MySQL Consulta SQL a ejecutar Ejecutar Resultado SQL Acerca de Configuracin IP/Nombre red servidor Puerto Usuario Contrasea Base de datos Acerca de Guardar configuracin Catlogo/BD Probar conexin Catlogos SQL de modificacin Utiliza LIMIT en las consultas SQL de seleccin, si devuelven muchos registros podran provocar que la aplicacin se ralentice en exceso o incluso deje de funcionar. Por ejemplo: nselect * from factura limit 0,10 n(mostrar los 10 primeros registros)" Introduzca consulta SQL

El conte nido de l fiche ro que m ostrar e l m e n e n e l activity " /res/layout/menu/activity_ajpd_soft_my_sql.xml":

android:title="@string/text_menu_configuracion" android:orderInCategory="100" android:showAsAction="never" /> android:title="@string/text_acercade">

Podre m os com pilar la aplicacin para probarla y ve r cm o que dan los com pone nte s visuale s, de m om e nto ningn botn funcionar pue s an no lo he m os program ado, pe ro nos se rvir para com probar que todo e s corre cto. Para e llo pulsare m os e n "R un" - "R un":

Se le ccionare m os "Android Application" y pulsare m os "O K":

Si todo e s corre cto se iniciar e l e m ulador de dispositivos Android y se e je cutar la aplicacin:

Incluso podre m os pulsar e n "MENU" para com probar que e l m e n apare ce corre ctam e nte e n la parte infe rior:

El cdigo XML de l fiche ro " /bin/A ndroidManifest.xml":

C abe de stacar " uses-permission android:name="android.permission.INTERNET" " que se r e l pe rm iso ne ce sario para que la aplicacin funcione , pue s se r ne ce aria la cone x in a Inte rne t (o a una re d wifi) para acce de r al se rvidor de MySQ L Se rve r.

Aadir segundo activity para introduccin de los datos de conexin con servidor MySQL
Nue stra aplicacin de e je m plo contar con dos activity, por un lado e l ante riorm e nte cre ado que se r e l principal, donde e l usuario introducir la consulta SQ L a e je cutar y donde se m ostrar e l re sultado. Por otro lado, nue stra aplicacin re que rir de un se gundo activity donde solicitare m os al usuario los datos de acce so al se rvidor MySQ L al que nos cone ctare m os (IP, pue rto, base de datos, usuario, contrase a). Para aadir un se gundo activity a nue stra aplicacin para dispositivos Android de sde Eclipse , pulsare m os con e l botn de re cho de l ratn sobre e l proye cto y se le ccionare m os "Ne w" - "O the r":

De sple gare m os "Android" y se le ccionare m os "Android Activity":

Se le ccionare m os "Blank Activity" y pulsare m os "Ne x t":

Introducire m os los datos para e l nue vo Activity: A ctivity Name : nom bre de l activity (ve ntana), por e je m plo "Activity_C onfiguracion". Layout Name : nom bre de l fiche ro x m l que conte ndr los com pone nte s visuale s de la activity, por e je m plo "activity_activity_configuracion". Navitagion Type : podre m os e le gir aqu e l tipo de nave gacin para la nue va actividad, las opcione s: Tabs, Tabs + Swipe , Swipe Vie ws + Title Strip y Dropdown. Estos tipos de nave gacin re que rirn API Le ve l iguale s o supe riore s a la 14. Se le ccionare m os "None ". Title : ttulo para la activity, por e je m plo "C onfiguracin".

Pulsare m os "Finish":

El asiste nte nos de jar la pe staa de l layout abie rta, para e dicin e n m odo grfico, aadire m os al layout de l activity se cundario (e l que m ostrar los datos de cone x in al se rvidor MySQ L) los siguie nte s com pone nte s: De De De De De De De De De la la la la la la la la la pale ta pale ta pale ta pale ta pale ta pale ta pale ta pale ta pale ta "Te x t Fie lds" aadire m os un "Te x tVie w" e n e l que m ostrare m os un te x to "IP/Nom bre re d se rvidor". "Te x t Fie lds" aadire m os un "EditTe x t", e n e ste cam po e l usuario introducir la IP/DNS de l se rvidor de MySQ L al que quie ra cone ctarse . "Te x t Fie lds" aadire m os un "Te x tVie w" e n e l que m ostrare m os un te x to "Pue rto". "Te x t Fie lds" aadire m os un "EditTe x t", e n e ste cam po e l usuario introducir e l pue rto de l se rvidor de MySQ L al que quie ra cone ctarse . "Te x t Fie lds" aadire m os un "Te x tVie w" e n e l que m ostrare m os un te x to "Usuario". "Te x t Fie lds" aadire m os un "EditTe x t", e n e ste cam po e l usuario introducir e l usuario de l se rvidor de MySQ L al que quie ra cone ctarse . "Te x t Fie lds" aadire m os un "Te x tVie w" e n e l que m ostrare m os un te x to "C ontrase a". "Te x t Fie lds" aadire m os un "EditTe x t", e n e ste cam po e l usuario introducir la contrase a de l se rvidor de MySQ L al que quie ra cone ctarse . "Form W idge ts" aadire m os un Button, e ste botn se r e l que pulse e l usuario para e je cutar la consulta SQ L.

Todos e stos datos visuale s se guardarn e n e l fiche ro /res/layout/activity_activity_configuracion.xml, e n nue stro caso te ndr e ste conte nido: xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/text_IP" /> android:id="@+id/txtIP" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:ems="10" android:inputType="text" >

android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/txtIP" android:text="@string/text_Puerto" /> android:id="@+id/txtPuerto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView2" android:inputType="number" android:ems="10" /> android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/txtPuerto" android:text="@string/text_Usuario" /> android:id="@+id/txtUsuario"

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView4" android:inputType="text" android:ems="10" /> android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/txtUsuario" android:text="@string/text_Contrasea" /> android:id="@+id/txtContrasena" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView3" android:inputType="textPassword" android:ems="10" /> android:id="@+id/btProbarConexion" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/txtContrasena" android:layout_centerHorizontal="true" android:layout_marginTop="16dp" android:text="@string/text_probar_conexion" />

Este activity tam bi n incorporar un m e n, e l fiche ro x m l de l m e n " /res/layout/menu/activity_activity_config.xml": android:title="@string/text_menu_guardar_configuracion" android:orderInCategory="100"/> android:title="@string/text_acercade">

El se gundo activity e n e je cucin:

Nota : m s ade lante e x plicare m os y m ostrare m os todo e l cdigo Java para hace r funcionar todas las opcione s visuale s de la aplicacin Android con acce so a MySQ L

Descargar y aadir JDBC a proyecto Eclipse para acceso a MySQL desde Android
En prim e r lugar ne ce sitare m os e l JDBC para e l m otor de base de datos al que que ram os acce de r de sde Android, e n nue stro caso, com o e je m plo, acce de re m os a un se rvidor de MySQ L Se rve r instalado e n un e quipo Linux . Para de scargar e l JDBC acce de re m os a la we b oficial de l m otor de base de datos y de scargare m os e l fiche ro corre spondie nte al JDBC , para MySQ L acce de re m os a la UR L: http://dev.mysql.com/downloads/connector/j A la fe cha de e ste tutorial de scargam os la ve rsin Connector/J 5.1.24, podre m os de scargar e l .tar o e l .zip, am bos son vlidos para cualquie r siste m a ope rativo. Una ve z de scargado e l fiche ro mysql-connector-java-5.1.24.zip lo de scom prim ire m os pulsando con e l botn de re cho de l ratn sobre l y se le ccionado "Ex trae r aqu":

De ntro de e ste fiche ro com prim ido habr varios (.jar, docum e ntacin, cdigo fue nte ), e l im portante e s e l mysql-connector-java-5.1.24-bin.jar, copiare m os e ste fiche ro (pulsando sobre l con e l botn de re cho):

De sde Eclipse , e x plorare m os nue stro proye cto Android, pulsare m os con e l botn de re cho sobre la carpe ta "libs" y pulsare m os e n "Paste " (para pe gar e l fiche ro .jar de l cone ctor de MySQ L):

Ejemplo acceso a BD MySQL desde Android con JDBC y Eclipse


Una ve z agre gado e l cone ctor .jar a nue stro proye cto (com o he m os indicado aqu) ya podre m os usar todas las funcione s y prode dim ie ntos para cone ctar con e l m otor de base de datos MySQ L de sde nue stra aplicacin Android con Eclipse . Para e llo se r tan se ncillo com o agre gar e n los imports de nue stro fiche ro .java lo siguie nte : import import import import import java.sql.Connection; java.sql.DriverManager; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement;

Aadire m os la siguie nte variable de tipo "C onne ction", que usare m os para cone ctarnos slo una ve z durante e l proce so de e je cucin de una consulta SQ L e n MySQ L Connection conexionMySQL;

Aadire m os un proce dim ie nto para cone ctarnos al se rvidor MySQ L, as podre m os usarlo cada ve z que lo ne ce site m os. Dicho proce dim ie nto ne ce sitar usuario, contrase a, IP o DNS, pue rto y catlogo de l se rvidor de MySQ L al que nos cone ctare m os, si hay algn e rror lo capturar y lo m ostrar e n una notificacin Android p u b l i cv o i dc o n e c t a r B D M y S Q L( S t r i n gu s u a r i o ,S t r i n gc o n t r a s e n a , S t r i n gi p ,S t r i n gp u e r t o ,S t r i n gc a t a l o g o ) { i f( c o n e x i o n M y S Q L= =n u l l ) { S t r i n gu r l C o n e x i o n M y S Q L=" " ; i f( c a t a l o g o! =" " ) u r l C o n e x i o n M y S Q L=" j d b c : m y s q l : / / "+i p+" : "+p u e r t o+" / "+c a t a l o g o ; e l s e u r l C o n e x i o n M y S Q L=" j d b c : m y s q l : / / "+i p+" : "+p u e r t o ; i f( u s u a r i o! =" "&c o n t r a s e n a! =" "&i p! =" "&p u e r t o! =" " ) { t r y { C l a s s . f o r N a m e ( " c o m . m y s q l . j d b c . D r i v e r " ) ; c o n e x i o n M y S Q L=D r i v e r M a n a g e r . g e t C o n n e c t i o n ( u r l C o n e x i o n M y S Q L , u s u a r i o ,c o n t r a s e n a ) ; } c a t c h( C l a s s N o t F o u n d E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } c a t c h( S Q L E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } } }

C om o e je m plo nos cone ctare m os al se rvidor MySQ L de sde nue stra aplicacin Android, e je cutare m os una consulta SQ L que de vue lve re gistros y m ostrare m os e l re sultado e n un cuadro de te x to: b u t t o n E j e c u t a r . s e t O n C l i c k L i s t e n e r ( n e wV i e w . O n C l i c k L i s t e n e r ( ) { p u b l i cv o i do n C l i c k ( V i e wv )

{ t r y { S S r i n gQ S L E j e c u t a r=" s e l e c t*f r o mf a c t u r a sl i m i t1 0 " ; c o n e c t a r B D M y S Q L ( " r o o t " ," c o n t r a s e a " , " a j p d s o f t . c o m " ," 3 3 0 6 " ," b d f a c t u r a s " ) ; S t a t e m e n ts t=c o n e x i o n M y S Q L . c r e a t e S t a t e m e n t ( ) ; R e s u l t S e tr s=s t . e x e c u t e Q u e r y ( S Q L E j e c u t a r ) ; S t r i n gr e s u l t a d o S Q L=" " ; I n t e g e rn u m C o l u m n a s=0 ; / / n m e r od ec o l u m n a s( c a m p o s )d el ac o n s u l aS Q L n u m C o l u m n a s=r s . g e t M e t a D a t a ( ) . g e t C o l u m n C o u n t ( ) ; / / m o s t r a m o se lr e s u l t a d o w h i l e( r s . n e x t ( ) ) { f o r( i n ti=1 ;i< =n u m C o l u m n a s ;i + + ) { i f( r s . g e t O b j e c t ( i )! =n u l l ) { i f( r e s u l t a d o S Q L! =" " ) i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L=r e s u l t a d o S Q L+r s . g e t O b j e c t ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L=r e s u l t a d o S Q L+r s . g e t O b j e c t ( i ) . t o S t r i n g ( ) ; e l s e i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L=r s . g e t O b j e c t ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L=r s . g e t O b j e c t ( i ) . t o S t r i n g ( ) ; } e l s e { i f( r e s u l t a d o S Q L! =" " ) r e s u l t a d o S Q L=r e s u l t a d o S Q L+" n u l l ; " ; e l s e r e s u l t a d o S Q L=" n u l l ; " ; } } r e s u l t a d o S Q L=r e s u l t a d o S Q L+" n " ; } t e x t R e s u l t a d o S Q L . s e t T e x t ( r e s u l t a d o S Q L ) ; s t . c l o s e ( ) ; r s . c l o s e ( ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } } ) ; }

Cdigo Java aplicacin AjpdSoft Acceso MySQL Android


C digo Java com ple to de l fiche ro " /src/A jpdSoftMySQL.java ", e ste fiche ro conte ndr e l cdigo Java de l activity principal de la aplicacin, de sde donde e l usuario podr e scribir las consultas SQ L que de se e y e je cutarlas. En e l cdigo incluim os todo lo ne ce sario para cone ctar con e l se rvidor MySQ L e spe cificado, guardar configuracin, cargar configuracin, obte ne r lista de catlogos de MySQ L (base s de datos), consulta de se le ccin, consulta de m odificacin, obte ne r datos de consultas de se le ccin, m ostrar m e n, e tc.: p a c k a g ec o m . e x a m p l e . a j p d s o f t m y s q l ; i m p o r ta n d r o i d . n e t . U r i ; i m p o r ta n d r o i d . o s . B u n d l e ; i m p o r ta n d r o i d . a p p . A c t i v i t y ; i m p o r ta n d r o i d . a p p . A l e r t D i a l o g ; i m p o r ta n d r o i d . c o n t e n t . C o n t e x t ; i m p o r ta n d r o i d . c o n t e n t . D i a l o g I n t e r f a c e ; i m p o r ta n d r o i d . c o n t e n t . I n t e n t ; i m p o r ta n d r o i d . c o n t e n t . S h a r e d P r e f e r e n c e s ; i m p o r ta n d r o i d . v i e w . M e n u ; i m p o r ta n d r o i d . v i e w . M e n u I t e m ; i m p o r ta n d r o i d . v i e w . V i e w ; i m p o r ta n d r o i d . w i d g e t . A r r a y A d a p t e r ; i m p o r ta n d r o i d . w i d g e t . B u t t o n ; i m p o r ta n d r o i d . w i d g e t . C h e c k B o x ; i m p o r ta n d r o i d . w i d g e t . S p i n n e r ; i m p o r ta n d r o i d . w i d g e t . T e x t V i e w ; i m p o r ta n d r o i d . w i d g e t . T o a s t ; i m p o r tj a v a . s q l . C o n n e c t i o n ; i m p o r tj a v a . s q l . D r i v e r M a n a g e r ; i m p o r tj a v a . s q l . R e s u l t S e t ; i m p o r tj a v a . s q l . S Q L E x c e p t i o n ; i m p o r tj a v a . s q l . S t a t e m e n t ; p u b l i cc l a s sA j p d S o f t M y S Q Le x t e n d sA c t i v i t y { S t r i n gi p S e r v i d o r M y S Q L ,c o n t r a s e n a M y S Q L ,u s u a r i o M y S Q L , p u e r t o M y S Q L ; s t a t i cS t r i n gS Q L E j e c u t a r ; S t r i n gc a t a l o g o M y S Q L ; T e x t V i e wt e x t S Q L ,t e x t R e s u l t a d o S Q L ; p r i v a t eB u t t o nb u t t o n E j e c u t a r ; p r i v a t eB u t t o nb u t t o n C a t a l o g o s ; p r i v a t eS p i n n e rs p n C a t a l o g o s ; p r i v a t eC h e c k B o xc h b S Q L M o d i f i c a c i o n ; s t a t i cC o n n e c t i o nc o n e x i o n M y S Q L ; S t r i n g [ ]l i s t a C a t a l o g o s ; @ O v e r r i d e p u b l i cv o i do n C r e a t e ( B u n d l es a v e d I n s t a n c e S t a t e ) { s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; s e t C o n t e n t V i e w ( R . l a y o u t . a c t i v i t y _ a j p d _ s o f t _ m y _ s q l ) ; / / A s i g n a m o sc a d ao b j e t ov i s u a lc r e a d oe ne ll a y o u tx m las u / / r e s p e c t i v av a r i a b l e t e x t S Q L=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t S Q L ) ; s p n C a t a l o g o s=( S p i n n e r ) f i n d V i e w B y I d ( R . i d . l s C a t a l o g o s ) ; t e x t R e s u l t a d o S Q L=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t R e s u l t a d o S Q L ) ;

b u t t o n E j e c u t a r=( B u t t o n )f i n d V i e w B y I d ( R . i d . b t E j e c u t a r ) ; b u t t o n C a t a l o g o s=( B u t t o n )f i n d V i e w B y I d ( R . i d . b t C a t a l o g o s ) ; c h b S Q L M o d i f i c a c i o n=( C h e c k B o x )f i n d V i e w B y I d ( R . i d . o p C o n s u l t a M o d i f i c a c i o n ) ; / / B o t np a r am o s t r a rl i s t ad ec a t l o g o s( b a s e sd ed a t o s )d eM y S Q L b u t t o n C a t a l o g o s . s e t O n C l i c k L i s t e n e r ( n e wV i e w . O n C l i c k L i s t e n e r ( ) { @ O v e r r i d e p u b l i cv o i do n C l i c k ( V i e wv ) { o b t e n e r L i s t a C a t a l o g o s ( ) ; t r y { A r r a y A d a p t e ra d a p t a d o r= n e wA r r a y A d a p t e r ( A j p d S o f t M y S Q L . t h i s , a n d r o i d . R . l a y o u t . s i m p l e _ l i s t _ i t e m _ 1 ,l i s t a C a t a l o g o s ) ; a d a p t a d o r . s e t D r o p D o w n V i e w R e s o u r c e ( a n d r o i d . R . l a y o u t . s i m p l e _ s p i n n e r _ d r o p d o w n _ i t e m ) ; s p n C a t a l o g o s . s e t A d a p t e r ( a d a p t a d o r ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } } ) ; / / B o t np a r ae j e c u t a rc o n s u l t aS Q Le nM y S Q L b u t t o n E j e c u t a r . s e t O n C l i c k L i s t e n e r ( n e wV i e w . O n C l i c k L i s t e n e r ( ) { p u b l i cv o i do n C l i c k ( V i e wv ) { c a r g a r C o n f i g u r a c i o n ( ) ; S Q L E j e c u t a r=t e x t S Q L . g e t T e x t ( ) . t o S t r i n g ( ) ; c a t a l o g o M y S Q L=s p n C a t a l o g o s . g e t S e l e c t e d I t e m ( ) . t o S t r i n g ( ) ; c o n e c t a r B D M y S Q L ( u s u a r i o M y S Q L ,c o n t r a s e n a M y S Q L , i p S e r v i d o r M y S Q L ,p u e r t o M y S Q L ,c a t a l o g o M y S Q L ) ; S t r i n gr e s u l t a d o S Q L= e j e c u t a r C o n s u l t a S Q L ( c h b S Q L M o d i f i c a c i o n . i s C h e c k e d ( ) , g e t A p p l i c a t i o n ( ) ) ; t e x t R e s u l t a d o S Q L . s e t T e x t ( r e s u l t a d o S Q L ) ; } } ) ; } / / c r e a re lm e n e ne la c t i v i t y @ O v e r r i d e p u b l i cb o o l e a no n C r e a t e O p t i o n s M e n u ( M e n um e n u ){ g e t M e n u I n f l a t e r ( ) . i n f l a t e ( R . m e n u . a c t i v i t y _ a j p d _ s o f t _ m y _ s q l ,m e n u ) ; r e t u r nt r u e ; } / / c d i g op a r ac a d ao p c i nd em e n @ O v e r r i d e p u b l i cb o o l e a no n O p t i o n s I t e m S e l e c t e d ( M e n u I t e mi t e m ) { s w i t c h( i t e m . g e t I t e m I d ( ) ) { c a s eR . i d . m e n u _ c o n f i g u r a c i o n : m e n u C o n f i g u r a c i o n ( ) ; r e t u r nt r u e ; c a s eR . i d . m e n u _ a c e r c a _ d e : v i s i t a r U R L ( " h t t p : / / w w w . a j p d s o f t . c o m " ) ; r e t u r nt r u e ; d e f a u l t : r e t u r ns u p e r . o n O p t i o n s I t e m S e l e c t e d ( i t e m ) ; } } / / a b r i rv e n t a n a a c t i v i t yC o n f i g u r a c i n p u b l i cv o i dm e n u C o n f i g u r a c i o n ( ) { I n t e n ti=n e wI n t e n t ( A j p d S o f t M y S Q L . t h i s , A c t i v i t y _ C o n f i g u r a c i o n . c l a s s ) ; s t a r t A c t i v i t y ( i ) ; } / / A b r i rn a v e g a d o rc o nU R Le s p e c i f i c a d a p u b l i cv o i dv i s i t a r U R L ( S t r i n gu r l ) { I n t e n tb r o w s e r I n t e n t= n e wI n t e n t ( I n t e n t . A C T I O N _ V I E W ,U r i . p a r s e ( u r l ) ) ; s t a r t A c t i v i t y ( b r o w s e r I n t e n t ) ; } / / g u a r d a rc o n f i g u r a c i na p l i c a c i nA n d r o i du s a n d oS h a r e d P r e f e r e n c e s p u b l i cv o i dg u a r d a r C o n f i g u r a c i o n ( ) { S h a r e d P r e f e r e n c e sp r e f s= g e t S h a r e d P r e f e r e n c e s ( " A j p d S o f t M y S Q L " ,C o n t e x t . M O D E _ P R I V A T E ) ; S h a r e d P r e f e r e n c e s . E d i t o re d i t o r=p r e f s . e d i t ( ) ; e d i t o r . p u t S t r i n g ( " S Q L " ,t e x t S Q L . g e t T e x t ( ) . t o S t r i n g ( ) ) ; e d i t o r . p u t S t r i n g ( " C a t l o g o " ,s p n C a t a l o g o s . g e t S e l e c t e d I t e m ( ) . t o S t r i n g ( ) ) ; e d i t o r . c o m m i t ( ) ; } / / c a r g a rc o n f i g u r a c i na p l i c a c i nA n d r o i du s a n d oS h a r e d P r e f e r e n c e s p u b l i cv o i dc a r g a r C o n f i g u r a c i o n ( ) { / / l e e m o sl o sv a l o r e sd ec o n e x i na ls e r v i d o r / / M y S Q Ld e s d eS h a r e d P r e f e r e n c e s S h a r e d P r e f e r e n c e sp r e f s= g e t S h a r e d P r e f e r e n c e s ( " A j p d S o f t M y S Q L " ,C o n t e x t . M O D E _ P R I V A T E ) ; S Q L E j e c u t a r=p r e f s . g e t S t r i n g ( " S Q L " ," " ) ; c a t a l o g o M y S Q L= p r e f s . g e t S t r i n g ( " C a t l o g o " ," " ) ; i p S e r v i d o r M y S Q L=p r e f s . g e t S t r i n g ( " C o n e x i n " ," 1 9 2 . 1 6 8 . 1 . 1 0 0 " ) ; c o n t r a s e n a M y S Q L=p r e f s . g e t S t r i n g ( " C o n t r a s e a " ," " ) ; p u e r t o M y S Q L= I n t e g e r . t o S t r i n g ( p r e f s . g e t I n t ( " P u e r t o " ,3 3 0 6 ) ) ; u s u a r i o M y S Q L=p r e f s . g e t S t r i n g ( " U s u a r i o " ," r o o t " ) ; } / / O b t e n e rl i s t ad ec a t l o g o sd eM y S Q L p u b l i cv o i do b t e n e r L i s t a C a t a l o g o s( ) { t r y {

c a r g a r C o n f i g u r a c i o n ( ) ; c o n e c t a r B D M y S Q L ( u s u a r i o M y S Q L ,c o n t r a s e n a M y S Q L , i p S e r v i d o r M y S Q L ,p u e r t o M y S Q L ," " ) ; / / e j e c u t a m o sc o n s u l t aS Q L S t a t e m e n ts t=c o n e x i o n M y S Q L . c r e a t e S t a t e m e n t ( ) ; R e s u l t S e tr s=s t . e x e c u t e Q u e r y ( " s h o wd a t a b a s e s " ) ; r s . l a s t ( ) ; I n t e g e rn u m F i l a s=0 ; n u m F i l a s=r s . g e t R o w ( ) ; l i s t a C a t a l o g o s=n e wS t r i n g [ n u m F i l a s ] ; I n t e g e rj=0 ; / / m o s t r a m o se lr e s u l t a d o f o r( i n ti=1 ;i< =n u m F i l a s ;i + + ) { l i s t a C a t a l o g o s[ j ]=r s . g e t O b j e c t ( 1 ) . t o S t r i n g ( ) ; j + + ; r s . p r e v i o u s ( ) ; } r s . c l o s e ( ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } / / c o n e c t a ra ls e r v i d o rd eM y S Q LS e r v e r p u b l i cv o i dc o n e c t a r B D M y S Q L( S t r i n gu s u a r i o ,S t r i n gc o n t r a s e n a , S t r i n gi p ,S t r i n gp u e r t o ,S t r i n gc a t a l o g o ) { i f( u s u a r i o= =" "| |p u e r t o= =" "| |i p= =" " ) { A l e r t D i a l o g . B u i l d e ra l e r t D i a l o g= n e wA l e r t D i a l o g . B u i l d e r ( A j p d S o f t M y S Q L . t h i s ) ; a l e r t D i a l o g . s e t M e s s a g e ( " A n t e sd ee s t a b l e c e rl ac o n e x i n"+ " c o ne ls e r v i d o r"+ " M y S Q Ld e b ei n d i c a rl o sd a t o sd ec o n e x i n"+ " ( I P ,p u e r t o ,u s u a r i oyc o n t r a s e a ) . " ) ; a l e r t D i a l o g . s e t T i t l e ( " D a t o sc o n e x i nM y S Q L " ) ; a l e r t D i a l o g . s e t I c o n ( a n d r o i d . R . d r a w a b l e . i c _ d i a l o g _ a l e r t ) ; a l e r t D i a l o g . s e t C a n c e l a b l e ( f a l s e ) ; a l e r t D i a l o g . s e t P o s i t i v e B u t t o n ( " A c e p t a r " , n e wD i a l o g I n t e r f a c e . O n C l i c k L i s t e n e r ( ) { p u b l i cv o i do n C l i c k ( D i a l o g I n t e r f a c ed i a l o g ,i n tw h i c h ) { m e n u C o n f i g u r a c i o n ( ) ; } } ) ; a l e r t D i a l o g . s h o w ( ) ; } e l s e { S t r i n gu r l C o n e x i o n M y S Q L=" " ; i f( c a t a l o g o! =" " ) u r l C o n e x i o n M y S Q L=" j d b c : m y s q l : / / "+i p+" : "+ p u e r t o+" / "+c a t a l o g o ; e l s e u r l C o n e x i o n M y S Q L=" j d b c : m y s q l : / / "+i p+" : "+p u e r t o ; i f( u s u a r i o! =" "&c o n t r a s e n a! =" "&i p! =" "&p u e r t o! =" " ) { t r y { C l a s s . f o r N a m e ( " c o m . m y s q l . j d b c . D r i v e r " ) ; c o n e x i o n M y S Q L=D r i v e r M a n a g e r . g e t C o n n e c t i o n ( u r l C o n e x i o n M y S Q L , u s u a r i o ,c o n t r a s e n a ) ; } c a t c h( C l a s s N o t F o u n d E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } c a t c h( S Q L E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } } } p u b l i cs t a t i cS t r i n ge j e c u t a r C o n s u l t a S Q L ( B o o l e a nS Q L M o d i f i c a c i o n ,C o n t e x tc o n t e x t ) { t r y { S t r i n gr e s u l t a d o S Q L=" " ; / / e j e c u t a m o sc o n s u l t aS Q Ld es e l e c c i n( d e v u e l v ed a t o s ) i f( ! S Q L M o d i f i c a c i o n ) { S t a t e m e n ts t=c o n e x i o n M y S Q L . c r e a t e S t a t e m e n t ( ) ; R e s u l t S e tr s=s t . e x e c u t e Q u e r y ( S Q L E j e c u t a r ) ; I n t e g e rn u m C o l u m n a s=0 ; / / n m e r od ec o l u m n a s( c a m p o s )d el ac o n s u l aS Q L n u m C o l u m n a s=r s . g e t M e t a D a t a ( ) . g e t C o l u m n C o u n t ( ) ; / / o b t e n e m o se lt t u l od el a sc o l u m n a s f o r( i n ti=1 ;i< =n u m C o l u m n a s ;i + + ) { i f( r e s u l t a d o S Q L! =" " ) i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L=r e s u l t a d o S Q L+ r s . g e t M e t a D a t a ( ) . g e t C o l u m n N a m e ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L=r e s u l t a d o S Q L+ r s . g e t M e t a D a t a ( ) . g e t C o l u m n N a m e ( i ) . t o S t r i n g ( ) ; e l s e i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L= r s . g e t M e t a D a t a ( ) . g e t C o l u m n N a m e ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L= r s . g e t M e t a D a t a ( ) . g e t C o l u m n N a m e ( i ) . t o S t r i n g ( ) ; }

/ / m o s t r a m o se lr e s u l t a d od el ac o n s u l t aS Q L w h i l e( r s . n e x t ( ) ) { r e s u l t a d o S Q L=r e s u l t a d o S Q L+" n " ; / / o b t e n e m o sl o sd a t o sd ec a d ac o l u m n a f o r( i n ti=1 ;i< =n u m C o l u m n a s ;i + + ) { i f( r s . g e t O b j e c t ( i )! =n u l l ) { i f( r e s u l t a d o S Q L! =" " ) i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L=r e s u l t a d o S Q L+ r s . g e t O b j e c t ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L=r e s u l t a d o S Q L+ r s . g e t O b j e c t ( i ) . t o S t r i n g ( ) ; e l s e i f( i<n u m C o l u m n a s ) r e s u l t a d o S Q L=r s . g e t O b j e c t ( i ) . t o S t r i n g ( )+" ; " ; e l s e r e s u l t a d o S Q L=r s . g e t O b j e c t ( i ) . t o S t r i n g ( ) ; } e l s e { i f( r e s u l t a d o S Q L! =" " ) r e s u l t a d o S Q L=r e s u l t a d o S Q L+" n u l l ; " ; e l s e r e s u l t a d o S Q L=" n u l l ; " ; } } r e s u l t a d o S Q L=r e s u l t a d o S Q L+" n " ; } s t . c l o s e ( ) ; r s . c l o s e ( ) ; } / /c o n s u l t aS Q Ld em o d i f i c a c i nd e / /d a t o s( C R E A T E ,D R O P ,I N S E R T ,U P D A T E ) e l s e { i n tn u m A f e c t a d o s=0 ; S t a t e m e n ts t=c o n e x i o n M y S Q L . c r e a t e S t a t e m e n t ( ) ; n u m A f e c t a d o s=s t . e x e c u t e U p d a t e ( S Q L E j e c u t a r ) ; r e s u l t a d o S Q L=" R e g i s t r o sa f e c t a d o s :"+S t r i n g . v a l u e O f ( n u m A f e c t a d o s ) ; s t . c l o s e ( ) ; } r e t u r nr e s u l t a d o S Q L ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( c o n t e x t , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; r e t u r n" " ; } } / / e ne le v e n t o" C e r r a ra p l i c a c i n "g u a r d a rl o sd a t o se nf i c h e r ox m l @ O v e r r i d e p u b l i cv o i do n D e s t r o y ( ) { s u p e r . o n D e s t r o y ( ) ; g u a r d a r C o n f i g u r a c i o n ( ) ; } / / e ne le v e n t o" A b r i ra p l i c a c i n "l e e m o sl o sd a t o sd e / / c o n f i g u r a c i nd e lf i c h e r ox m l @ O v e r r i d e p r o t e c t e dv o i do n S t a r t ( ) { s u p e r . o n S t a r t ( ) ; c a r g a r C o n f i g u r a c i o n ( ) ; t r y { t e x t S Q L . s e t T e x t ( S Q L E j e c u t a r ) ; / / s e l e c c i o n a m o se ne lS p i n n e r( l i s t ad e s p l e g a b l e ) / / e l l t i m oc a t l o g oM y S Q Lu s a d o i f( c a t a l o g o M y S Q L! =" " ) { l i s t a C a t a l o g o s=n e wS t r i n g [ 1 ] ; l i s t a C a t a l o g o s[ 0 ]=c a t a l o g o M y S Q L ; A r r a y A d a p t e ra d a p t a d o r= n e wA r r a y A d a p t e r ( A j p d S o f t M y S Q L . t h i s , a n d r o i d . R . l a y o u t . s i m p l e _ l i s t _ i t e m _ 1 ,l i s t a C a t a l o g o s ) ; a d a p t a d o r . s e t D r o p D o w n V i e w R e s o u r c e ( a n d r o i d . R . l a y o u t . s i m p l e _ s p i n n e r _ d r o p d o w n _ i t e m ) ; s p n C a t a l o g o s . s e t A d a p t e r ( a d a p t a d o r ) ; } } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } } } Y e l cdigo de l fiche ro " /src/A ctivity_Configuracion.java " corre spondie nte al activity donde introducire m os los datos de cone x in al se rvidor MySQ L y de sde donde podre m os re aliar una cone x in de prue ba. En dicho cdigo guardare m os los valore s e n un fiche ro de configuracin y podre m os probar la cone x in al se rvidor tam bi n m ostram os e l m e n corre spondie nte a e ste activity: p a c k a g ec o m . e x a m p l e . a j p d s o f t m y s q l ; i m p o r ta n d r o i d . n e t . U r i ; i m p o r ta n d r o i d . o s . B u n d l e ; i m p o r ta n d r o i d . a p p . A c t i v i t y ; i m p o r ta n d r o i d . c o n t e n t . C o n t e x t ; i m p o r ta n d r o i d . c o n t e n t . I n t e n t ; i m p o r ta n d r o i d . v i e w . M e n u ; i m p o r ta n d r o i d . v i e w . M e n u I t e m ; i m p o r ta n d r o i d . v i e w . V i e w ; i m p o r ta n d r o i d . w i d g e t . B u t t o n ; i m p o r ta n d r o i d . w i d g e t . T e x t V i e w ; i m p o r ta n d r o i d . w i d g e t . T o a s t ; i m p o r ta n d r o i d . c o n t e n t . S h a r e d P r e f e r e n c e s ; i m p o r tj a v a . s q l . C o n n e c t i o n ; i m p o r tj a v a . s q l . D r i v e r M a n a g e r ;

i m p o r tj a v a . s q l . S Q L E x c e p t i o n ; p u b l i cc l a s sA c t i v i t y _ C o n f i g u r a c i o ne x t e n d sA c t i v i t y{ T e x t V i e wt e x t I P ,t e x t P u e r t o ,t e x t C o n t r a s e n a ,t e x t U s u a r i o ; p r i v a t eB u t t o nb u t t o n P r o b a r C o n e x i o n ; @ O v e r r i d e p u b l i cv o i do n C r e a t e ( B u n d l es a v e d I n s t a n c e S t a t e ){ s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; s e t C o n t e n t V i e w ( R . l a y o u t . a c t i v i t y _ a c t i v i t y _ _ c o n f i g u r a c i o n ) ; / / A s i g n a m o sac a d ao b j e t ov i s u a lc r e a d oas u / / r e s p e c t i v oe l e m e n t od em a i n . x m l t e x t I P=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t I P ) ; t e x t P u e r t o=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t P u e r t o ) ; t e x t C o n t r a s e n a=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t C o n t r a s e n a ) ; t e x t U s u a r i o=( T e x t V i e w ) f i n d V i e w B y I d ( R . i d . t x t U s u a r i o ) ; b u t t o n P r o b a r C o n e x i o n=( B u t t o n )f i n d V i e w B y I d ( R . i d . b t P r o b a r C o n e x i o n ) ; / / B o t np a r ae j e c u t a rc o n s u l t aS Q Le nM y S Q L b u t t o n P r o b a r C o n e x i o n . s e t O n C l i c k L i s t e n e r ( n e wV i e w . O n C l i c k L i s t e n e r ( ) { p u b l i cv o i do n C l i c k ( V i e wv ) { / / C o n e c t a m o sc o ne ls e r v i d o rd eM y S Q Ld i r e c t a m e n t e t r y { S t r i n gc o n e x i o n M y S Q L U R L=" j d b c : m y s q l : / / "+ t e x t I P . g e t T e x t ( ) . t o S t r i n g ( )+" : "+t e x t P u e r t o . g e t T e x t ( ) . t o S t r i n g ( ) ; S t r i n gu s u a r i o=t e x t U s u a r i o . g e t T e x t ( ) . t o S t r i n g ( ) ; S t r i n gc o n t r a s e n a=t e x t C o n t r a s e n a . g e t T e x t ( ) . t o S t r i n g ( ) ; T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " C o n e c t a n d oas e r v i d o rM y S Q L " , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; C l a s s . f o r N a m e ( " c o m . m y s q l . j d b c . D r i v e r " ) ; C o n n e c t i o nc o n=D r i v e r M a n a g e r . g e t C o n n e c t i o n ( c o n e x i o n M y S Q L U R L , u s u a r i o ,c o n t r a s e n a ) ; T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " C o n e c t a d oS e r v i d o rM y S Q L " , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; c o n . c l o s e ( ) ; } c a t c h( C l a s s N o t F o u n d E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } c a t c h( S Q L E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ S H O R T ) . s h o w ( ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; } } } ) ; } @ O v e r r i d e p u b l i cb o o l e a no n C r e a t e O p t i o n s M e n u ( M e n um e n u ){ g e t M e n u I n f l a t e r ( ) . i n f l a t e ( R . m e n u . a c t i v i t y _ a c t i v i t y _ _ c o n f i g u r a c i o n ,m e n u ) ; r e t u r nt r u e ; } / / c d i g op a r ac a d ao p c i nd em e n @ O v e r r i d e p u b l i cb o o l e a no n O p t i o n s I t e m S e l e c t e d ( M e n u I t e mi t e m ) { s w i t c h( i t e m . g e t I t e m I d ( ) ) { c a s eR . i d . m e n u _ g u a r d a r _ c o n f i g u r a c i o n : g u a r d a r C o n f i g u r a c i o n ( ) ; r e t u r nt r u e ; c a s eR . i d . m e n u _ a c e r c a _ d e : v i s i t a r U R L ( " h t t p : / / w w w . a j p d s o f t . c o m " ) ; r e t u r nt r u e ; d e f a u l t : r e t u r ns u p e r . o n O p t i o n s I t e m S e l e c t e d ( i t e m ) ; } } / / g u a r d a rc o n f i g u r a c i na p l i c a c i nA n d r o i du s a n d oS h a r e d P r e f e r e n c e s p u b l i cv o i dg u a r d a r C o n f i g u r a c i o n ( ) { t r y { S h a r e d P r e f e r e n c e sp r e f s= g e t S h a r e d P r e f e r e n c e s ( " A j p d S o f t M y S Q L " ,C o n t e x t . M O D E _ P R I V A T E ) ; S h a r e d P r e f e r e n c e s . E d i t o re d i t o r=p r e f s . e d i t ( ) ; e d i t o r . p u t S t r i n g ( " C o n e x i n " ,t e x t I P . g e t T e x t ( ) . t o S t r i n g ( ) ) ; e d i t o r . p u t S t r i n g ( " C o n t r a s e a " ,t e x t C o n t r a s e n a . g e t T e x t ( ) . t o S t r i n g ( ) ) ; i n tp u e r t o=3 3 0 6 ; p u e r t o=I n t e g e r . v a l u e O f ( t e x t P u e r t o . g e t T e x t ( ) . t o S t r i n g ( ) ) ; e d i t o r . p u t I n t ( " P u e r t o " ,p u e r t o ) ; e d i t o r . p u t S t r i n g ( " U s u a r i o " ,t e x t U s u a r i o . g e t T e x t ( ) . t o S t r i n g ( ) ) ; e d i t o r . c o m m i t ( ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; } } / / c a r g a rc o n f i g u r a c i na p l i c a c i nA n d r o i du s a n d oS h a r e d P r e f e r e n c e s p u b l i cv o i dc a r g a r C o n f i g u r a c i o n ( ) { t r y {

S h a r e d P r e f e r e n c e sp r e f s= g e t S h a r e d P r e f e r e n c e s ( " A j p d S o f t M y S Q L " ,C o n t e x t . M O D E _ P R I V A T E ) ; t e x t I P . s e t T e x t ( p r e f s . g e t S t r i n g ( " C o n e x i n " ," 1 9 2 . 1 6 8 . 1 . 1 0 0 " ) ) ; t e x t C o n t r a s e n a . s e t T e x t ( p r e f s . g e t S t r i n g ( " C o n t r a s e a " ," " ) ) ; i n tp u e r t o=3 3 0 6 ; p u e r t o=p r e f s . g e t I n t ( " P u e r t o " ,3 3 0 6 ) ; t e x t P u e r t o . s e t T e x t ( I n t e g e r . t o S t r i n g ( p u e r t o ) ) ; t e x t U s u a r i o . s e t T e x t ( p r e f s . g e t S t r i n g ( " U s u a r i o " ," r o o t " ) ) ; } c a t c h( E x c e p t i o ne ) { T o a s t . m a k e T e x t ( g e t A p p l i c a t i o n C o n t e x t ( ) , " E r r o r :"+e . g e t M e s s a g e ( ) , T o a s t . L E N G T H _ L O N G ) . s h o w ( ) ; } } / / A b r i rn a v e g a d o rc o nU R Ld e t e r m i n a d a p u b l i cv o i dv i s i t a r U R L ( S t r i n gu r l ) { I n t e n tb r o w s e r I n t e n t= n e wI n t e n t ( I n t e n t . A C T I O N _ V I E W ,U r i . p a r s e ( u r l ) ) ; s t a r t A c t i v i t y ( b r o w s e r I n t e n t ) ; } / / e ne le v e n t o" C e r r a rv e n t a n a "g u a r d a rl o sd a t o se nf i c h e r ox m l @ O v e r r i d e p u b l i cv o i do n D e s t r o y ( ) { s u p e r . o n D e s t r o y ( ) ; g u a r d a r C o n f i g u r a c i o n ( ) ; } / / e ne le v e n t o" A b r i rv e n t a n a "l e e m o sl o sd a t o sd ec o n f i g u r a c i nd e lf i c h e r ox m l @ O v e r r i d e p r o t e c t e dv o i do n S t a r t ( ) { s u p e r . o n S t a r t ( ) ; c a r g a r C o n f i g u r a c i o n ( ) ; } } En e l siguie nte e nlace se pue de de scargar de form a gratuita e l proye cto com ple to e n Eclipse : AjpdSoft Acce so MySQ L Android cdigo Java.

Aplicacin Android AjpdSoft Acceso MySQL en funcionamiento


A continuacin e x plicam os cm o funciona la aplicacin AjpdSoft Acce so MySQ L Android, tras abrirla e n e l dispositivo sm artphone o table t con Android, pulsare m os e n e l botn de Me n de l dispositivo:

Apare ce r e l m e n e n la parte infe rior, tocare m os e n "C onfiguracin":

Introducire m os los datos de cone x in al se rvidor MySQ L al que que ram os cone ctarnos (IP, Pue rto, Usuario y C ontrase a):

Pulsare m os e l botn de Me n de l dispositivo y e n e l m e n tocare m os e n "Guardar configuracin", de e sta form a los datos de cone x in se guardarn para futuras cone x ione s. Una ve z e stable cidos los datos podre m os pulsar e n e l botn "Probar cone x in", si todo e s corre cto m ostrar e l m e nsaje "C one ctado se rvidor MySQ L", ce rrare m os e sta ve ntana y volve re m os a la ve ntana principal pulsando e l botn Atrs de l dispositivo:

Ahora de be re m os e le gir e l catlogo (base de datos) que usare m os, para obte ne r las base s de datos de l se rvidor al que nos he m os cone ctado pulsare m os e n "C atlogos":

Nos m ostrar e n una lista de sple gable todos los catlogos a los que e l usuario e spe cificado ante riorm e nte te ndr acce so, tocare m os e n e l que que ram os usar, por e je m plo "bdajpdsoft":

Ahora ya podre m os introducir la consulta SQ L que que ram os para m ostrar los datos que ne ce site m os, e n e l e je m plo m ostram os la sum a total de un cam po de una tabla con: select sum(counter) from nuke_stories Tras e scribir la consulta SQ L tocare m os e n "Eje cutar":

Nota : hay que te ne r e n cue nta que la aplicacin no re aliza LIMIT e n las consultas de se le ccin (SELEC T), por lo que si que re m os e je cutar una consulta que pue de de volve r gran cantidad de datos re com e ndam os usar LIMIT para e vitar que la aplicacin se rale ntice e n e x ce so o incluso de je de re sponde r. Por e je m plo: select * from factura limit 0,10 (m ostrar los 10 prim e ros re gistros de la tabla "factura") La aplicacin m ostrar todos los datos de la consulta SQ L e je cutada (nom bre de las colum nas y valor de cada una de e llas):

AjpdSoft Acce so MySQ L Android tam bi n pe rm ite e je cutar consultas SQ L de m odificacin de datos (INSER T, UPDATE, DELETE, DR O P, C R EATE, ALTER ), para e llo e scribire m os la consulta SQ L y m arcare m os "SQ L de m odificacin":

En e l siguie nte e nlace se pue de de scargar de form a gratuita e l proye cto com ple to e n Eclipse : AjpdSoft Acce so MySQ L Android cdigo Java.

Publicar aplicacin Android en Google Play


En e l siguie nte tutorial e x plicam os cm o publicar una aplicacin para dispotivos Android e n Google Play (ante s Google Android Mark e t): Publicar aplicacin Android e n Google Play, obte ne r be ne ficios.

Artculos relacionados
AjpdSoft Acce so MySQ L Android cdigo Java. Me ns e n Android, cm o aadir m e ns a nue stras aplicacione s Android Java Eclipse . C m o aadir un botn y su cdigo e n aplicacin Android con Eclipse . Mi prim e ra aplicacin Android con Eclipse e n Linux , instalar Eclipse Ubuntu. Publicar aplicacin Android e n Google Play, obte ne r be ne ficios. De sarrollar aplicacin Android con acce so a base de datos SQ Lite con Eclipse . De sarrollar aplicacione s Android con Google App Inve ntor de form a visual. De sarrollar aplicacin le ctor de cdigos de barras para Android con App Inve ntor. AjpdSoft Monitor W ifi Android. AjpdSoft Age nda Te le fnica Android. AjpdSoft Le ctor C digos de Barras Android. C om o cre ar una aplicacin con Java y Eclipse . Instalacin y configuracin de Eclipse SQ L Ex plore r e n Eclipse (Java). Instalar y trabajar con la clase Visual Editor de Eclipse (Java). Mi prim e ra aplicacin para te l fono m vil basada e n Java (J2ME) con Ne tBe ans. Java e n e stado puro, m i prim e ra aplicacin Java. C m o acce de r a MySQ L con JSP, Tom cat y JDBC . Artculos de l Proye cto AjpdSoft sobre e l le nguaje de program acin Java. Eje rcicios re sue ltos e n e l le nguje de program acin C . Artculos de l Proye cto AjpdSoft sobre siste m as ope rativos (W indows, GNU Linux , e tc.). Artculos de l Proye cto AjpdSoft sobre los siste m as ope rativos Microsoft W indows. Artculos de l Proye cto AjpdSoft sobre program acin. Artculos de l Proye cto AjpdSoft sobre De lphi (le nguaje de program acin). Artculos de l Proye cto AjpdSoft sobre Visual Basic (le nguaje de program acin).

Crditos
Artculo re alizado nte gram e nte por Alonsojpd m ie m bro fundador de l proye cto Proye cto AjpdSoft.

Artculo e n ingl s.

Anuncios Google

Google Android

Android SDK

Apps Android

Sistema Android

Enviado e l Saturday, 25 May a las 01:23:29 por ajpdsoft

Me gusta

Compartir

743

Seguir a @ajpdsoft

3,170 seguidores

Seguir Be the first of your friends to follow Proyecto AjpdSoft.

E s te s itio web NO CONTIENE malware, todos los programas c on c digo fuente aqu. A utor: A lons o J avier P rez D az Google + Sgue nos e n Google +

You might also like