|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

104.- RDC.

Vamos a ver y obtener información de una base de datos MySQL mediante RDC.
No se utiliza PHP.

Para probarlo vamos a realizarlo en forma local, en nuestro ordenador. (Se puede hacer en servidor remoto.)
Para empezar debemos tener instalado un servidor web y mysql mediante el paquete WAMP.
Lo instalamos en c:\wamp

_______________________________________________________________________

1.- Vamos a bajar el RDC-server.zip (RDC es un servidor web basado en java) de...

http://www.b4x.com/android/forum/threads/remote-database-connector-files.31541/

Lo descomprimimos, en mi caso lo descomprimo en... C:\Android\RDC\RDC-Server

Localizo la carpeta de configuración en... C:\Android\RDC\RDC-Server\RemoteDatabaseConnector, ahí están los archivos de configuración.

- RDC es un servidor web en java. Lo podemos copiar en una carpeta de Windows o de LINUX. Para poder trabajar en un servidor a distancia lo podemos realizar controlándolo desde telnet o ssh. Arrancarlo desde ssh.
Este servidor necesita unos controles, driver, según el tipo de base de datos que quiera controlar.

Si creas este servidor y lo arrancas puedes comprobar que funciona escribiendo esto en un navegador...

http://192.168.1.3:17178/
(con tu IP) Simplemente saldrá una página en blanco sin errores.

- Se puede sustituir este servidor web con otro creado mediante B4J.

2.- Bajamos el Controlador java que relaciona al MySQL con el servidor. Para ello vamos a...

http://dev.mysql.com/downloads/connector/j/

Ponemos el desplegable en Platform Independent y bajamos el mysql-connector-java-5.1.34.zip
(Para bajarlo es necesario realizar un registro gratuito)

Descomprimimos el archivo bajado y copiamos... mysql-connector-java-5.1.34-bin.jar en

C:\Android\RDC\RDC-Server\RemoteDatabaseConnector\jdbc_driver

Según sea el tipo de base de datos utilizada el archivo del controlador será distinto, en nuestro caso lo estamos haciendo con MySQL.
Si quisieramos hacerlo con SQL Server bajaríamos: http://jtds.sourceforge.net/
Y para SQLite lo haríamos con: https://bitbucket.org/xerial/sqlite-jdbc/downloads
Para Oracle consultamos: https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html

3.- Vamos a realizar la configuración. Editamos (Botón derecho / Editar) el archivo...

C:\Android\RDC\RDC-Server\RemoteDatabaseConnector\RunRLC.bat

Debemos poner la dirección donde se encuentra nuestro JAVA, podemos verlo si entramos en B4A, Tools / Configure paths, pero CUIDADO, ahí encontramos javac.exe y nosotros pondremos simplemente la palabra java.

RunRLC.bat
"C:\Program Files (x86)\Java\jdk1.6.0_26\bin\java" -Xmx256m -cp .;libs\*;jdbc_driver\* anywheresoftware.b4a.remotedatabase.RemoteServer
pause

4.- Cambiamos el archivo del Driver

C:\Android\RDC\RDC-Server\RemoteDatabaseConnector\config.properties

Vamos a realizarlo con un ejemplo:

RunRLC.bat
#Lines starting with '#' are comments.
#Backslash character at the end of line means that the command continues in the next line.
 
DriverClass=com.mysql.jdbc.Driver
JdbcUrl=jdbc:mysql://localhost/basedatosempresa?characterEncoding=utf8

#SQL Server
#DriverClass=net.sourceforge.jtds.jdbc.Driver
#JdbcUrl=jdbc:jtds:sqlserver:///
User=root
Password=1234
ServerPort=17178
#If Debug is true then this file will be reloaded on every query.
#This is useful if you need to modify the queries.
Debug=true

#commands
# Aquí ponemos los comandos completos que queremos utilizar sql.crear_tabla=CREATE TABLE personas (\ id INT NOT NULL AUTO_INCREMENT,\ nombre CHAR(30) NOT NULL,\ edad CHAR(2) NOT NULL,\ PRIMARY KEY (id)) sql.inserta_nombreyedad=INSERT INTO personas VALUES (null, ?,?) sql.selecciona_nombreyedad=SELECT nombre, edad FROM personas WHERE nombre = ?
sql.selecciona_mayor=SELECT nombre FROM personas WHERE edad > ?

- Anteriormente con http:\\localhost\myphpadmin creamos una base de datos llamada basedatosempresa. Vamos a Privilegios y le añadimos al usuario root con contraseña 1234

- La tabla llamada personas con dos campos: nombre y edad, se creará con el código de Basic4Android, no la creamos ahora.
- Podremos insertar nombre y edad
- Podremos seleccionar nombre y edad de un nombre.
- Podremos seleccionar mayores según la edad.

En este archivo se configura lo que podría realizar la llamada al servidor.
Establecemos un usuario y su clave. Utilizaremos el puerto 17178

En commands ponemos los comandos que utilizaremos, es decir los comandos necesarios deben estar en este archivo.
En el código de Basic4Android llamaremos al comando adecuado.

5.- Vamos a arrancar el Servidor. Pulsamos con el ratón sobre el archivo...

C:\Android\RDC\RDC-Server\RemoteDatabaseConnector\RunRLC.bat

nos sale esta pantalla. Si nos indica STARTING, significa que el servidor está arrancado y funcionando.

- Arrancamos previamente el servidor WAMP, que se supone tenemos instalado.

Vamos a comprobar si funciona con nuestra base de datos, en un navegador escribimos

http://127.0.0.1:17178/?method=test

Si obtenemos una Connection successful es que está funcionando.

NOTA: para hacer pruebas deshabilita momentáneamente el Firewall de Windows. Más tarde cuando ya funcione habilita solamente el puerto 17178.
__________________________________________

- Código en nuestro programa de B4A.

5.- Vamos al código de Basic4Android, creamos un nuevo proyecto, lo he llamado RDC, y dentro de él una nueva Clase: Add New Module / Class Module, lo llamamos DBRequestManager.

El contenido de esta Clase, lo debemos de bajar de la web de B4A, ya que se necesita estar registrado para bajarlo, aunque lo podemos encontrar en el tutorial español del mismo sitio. Está en varios partes de los foros.

6.- Vamos a la parte Main de nuestro código.

Activamos las librerías: ByteConverter, HttpUtils2 y RandomAccessFiles

Antes mediante el Designer creamos un Layout llamado "insertrdc" con dos EditText y cuatro botones.
Luego pegamos este código...

Importante: escribe la IP de tu ordenador local, no escribas localhost ni 127.0.0.1 en el RegManager.Initialize.

Main del Basic4Android
Sub Process_Globals
  Dim RegManager As DBRequestManager
End Sub

Sub Globals
Dim EditText1, EditText2 As EditText
Dim nombre, edad As String
End Sub 

Sub Activity_Create(FirstTime As Boolean) 
    If FirstTime Then
    RegManager.Initialize(Me,"http://192.168.1.3:17178")
    Activity.LoadLayout("insertrdc")
    End If
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause

End Sub

Sub JobDone(Job As HttpJob)
If Job.Success = False Then
Log("Error: " & Job.ErrorMessage)
Else
    If Job.JobName = "DBRequest" Then
    Dim result As DBResult = RegManager.HandleJob(Job)
    RegManager.PrintTable(result)
    'Log(result.Tag)
    End If
End If
Job.Release
End Sub

Sub Button1_Click
' CREAR TABLA
Dim cmd As DBCommand
cmd.Initialize
cmd.Name="crear_tabla"
 RegManager.ExecuteCommand(cmd, 0)
End Sub

Sub Button2_Click
' INSERTAR
nombre = EditText1.Text
edad = EditText2.Text
Dim cmd As DBCommand
cmd.Initialize
cmd.Name="inserta_nombreyedad"
cmd.Parameters= Array As Object(nombre, edad) 
RegManager.ExecuteCommand(cmd, 0)
End Sub

Sub Button3_Click
' CONSULTAR
nombre = EditText1.Text
Dim cmd As DBCommand
cmd.Initialize
cmd.Name="selecciona_nombreyedad"
cmd.Parameters= Array As Object(nombre) 
RegManager.ExecuteQuery(cmd, 0, nombre)
End Sub

Sub Button4_Click
' MAYOR
edad = EditText2.Text
Dim cmd As DBCommand
cmd.Initialize
cmd.Name="selecciona_mayor"
cmd.Parameters= Array As Object(edad) 
RegManager.ExecuteQuery(cmd, 0, edad)
End Sub

        

 

- Si no lo hemos hecho, antes de hacerlo funcionar vamos a http:\\localhost\myphpadmin

y creamos una nueva base de datos llamada basedatosempresa (Le ponemos de Cotejamiento utf2 spanish)

En esa base de datos vamos a Privilegios y añadimos al usuario: root y le ponemos de contraseña: 1234.

_________________
- Comentarios.

- Primero pulsamos el primer botón, el de Crear Tabla.
Volvemos a entrar en http:\\localhost\myphpadmin y observaremos que se ha creado la tabla personas, esto lo realiza la parte de #command del archivo RunRLC.bat

- Luego escribimos un nombre y una edad en los casilleros, pulsamos el botón de Insertar, volvemos a http:\\localhost\myphpadmin y observamos que se ha añadido ese nombre y esa edad.

- Después escribimos un nombre de usuario que ya esté guardado en el EditText1 y pulsamos el tercer botón, el de Consultar, nos saldrá la edad de ese usuario.

- Después escribimos en EditText2 una edad y pulsamos el Botón4, en el log, aparecerá las personas mayores de esa edad.
El resultado de la consulta se obtien en la Subrutina JobDone, mediante la variable result.

__________________________________

- RDC y SQLite.

En los tutoriales se encuentra cómo hacerlo con SQLite. Necesitarás el driver para SQLite https://bitbucket.org/xerial/sqlite-jdbc/downloads

Configurar el archivo...

DriverClass=org.sqlite.JDBC
JdbcUrl=jdbc:sqlite:C:/carpeta/mibasededatos.db

SQLite no admite peticiones a la vez, hay que configurarlo para que cuando llegue una petición y otra esté en proceso, la anterior espere.

Para ello ponemos

c3p0.minPoolSize= 1
c3p0.maxPoolSize= 1

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información