Spanish Tutorial RDC y MySQL

dhernandez

Active Member
Licensed User
Longtime User
Buenas tardes Colegas del Foro... Les traigo un Mini Tutorial que hice para aquellos que como a mí, se me complica un poco configurar el RDC(Remote Database Connector), para conectarse a cualquier base de datos...
Lo hice con MySQL y AppServ como servidor.
Espero sus comentarios.
Este tutorial es gracias a los tutoriales de Erel y las opinines de los miembros del foro..
 

Attachments

  • Tutorial_RDC.pdf
    505.6 KB · Views: 1,247
  • DBRequestManager.pdf
    150.5 KB · Views: 934

dhernandez

Active Member
Licensed User
Longtime User
Los que han descargado el archivo, espero sus comentarios para saber si le funcionó y qué está mal para mejorarlo. Muchas Gracias\\
Those who have downloaded the file, I welcome your comments to see if it worked and what is wrong for improvement. Thank you.
 

23021959Pepe

Member
Licensed User
Longtime User
Muy bueno y explicativo, si alguna vez necesitáramos su uso, ya tenemos una base en donde apoyarnos.

Saludos
pepe
 

Heppy

Active Member
Licensed User
Longtime User
dhernandez, darte las gracias por este tutorial y puedo confirmar que funciona perfectamente con Interbase 2009.
Añadir al post lo que he realizado para conectarme y dejarlo un poquito a mi gusto.

He copiado a la carpeta jdbc_driver el archivo interclient.jar que está localizado en el directorio de instalación de Interbase\SDK\LIB

He instalado el AppServer y en el config.properties he puesto lo siguiente:

DriverClass=interbase.interclient.Driver
JdbcUrl=jdbc:interbase://192.168.1.xxx/d:/directorio/basedatos.ib

Le he puesto su usuario, contraseña y no toco el puerto. Las sentencias SQL que cada uno se las modifique como quiera.

Y para que el servicio RunRLC no se vea, he creado un archivo android.vbs que es un script para ocultar la consola de sistema cuando ejecuto el RunRLC.bat. He creado un acceso directo y lo he llevado a Inicio de Windows. El contenido del script vbs es:

set objshell = createobject("wscript.shell")
objshell.run "RunRLC.bat",vbhide

Un saludo a todos y otra vez gracias a dhernandez por dejarnos tan claro el tema.
 

dhernandez

Active Member
Licensed User
Longtime User
Muchas Gracias Heppy... Para eso es este tutorial, para agregar mejoras y posteriormente poder ser utilizado por otros programadores novatos en B4A...
Gracias de nuevo Heppy por tus comentarios :).
Si considera que le falta más por explicar, sólo comenten aqui las mejoras o adaptaciones que sugieran... gracias a todos por leerme.
 

Heppy

Active Member
Licensed User
Longtime User
Sigueindo con las posibles configuraciones para conectarse remotamente, he probado a arrancar Sybase

En config.propeties

DriverClass=net.sourceforge.jtds.jdbc.Driver
JdbcUrl=jdbc:jtds:sybase://192.168.1.xxx:5000/basedatos

He copiado el jar a jdbc_driver.

Adjunto el Interclient de Interbase y el jtds de Sybase por si alguien lo necesita
Saludos
 

Attachments

  • InterbaseySybaseJars.zip
    503.7 KB · Views: 531

Heppy

Active Member
Licensed User
Longtime User
Bueno pues vamos avanzando y ahora se me planteaban problemas de INSERT TO y UPDATE con Interbase.
Las sentencias que deben usarse con reqManager son:

Una sentencia SELECT:
B4X:
  Dim Name As Int = 1
  cmd.Initialize
  cmd.Name = "select_inst"
  cmd.Parameters = Array As Object(Name)
  reqManager.ExecuteQuery(cmd, 0, Null)

En config. properties del RemoteDataBaseConnector (por ejemplo):
B4X:
sql.select_inst=SELECT ID,TIPO,NUMERO,SITUACION,ZONA FROM gsituaciones where ID=?

Sentencias INSERT INTO y UPDATE
B4X:
  Dim id as int = 1
  Dim f as Float = 0
   cmd.Initialize
  cmd.Name = "update_posicion"
  cmd.Parameters = Array As Object(f,i)
  reqManager.ExecuteCommand(cmd,, Null)

En config. properties del RemoteDataBaseConnector (por ejemplo):
B4X:
sql.update_posicion=UPDATE GSITUACIONES SET LATITUD=? WHERE ID=?

Puede daros Appsrv un error HTTP 500, que es un error interno del servidor.
La solución que he encontrado es borrar el archivo .htacess en los direcorios de APPSRV y reiniciar el ordenador.

Un saludo
 

jesuslizonsoluciones

Member
Licensed User
Longtime User
dhernandez, darte las gracias por este tutorial y puedo confirmar que funciona perfectamente con Interbase 2009.
Añadir al post lo que he realizado para conectarme y dejarlo un poquito a mi gusto.

He copiado a la carpeta jdbc_driver el archivo interclient.jar que está localizado en el directorio de instalación de Interbase\SDK\LIB

He instalado el AppServer y en el config.properties he puesto lo siguiente:

DriverClass=interbase.interclient.Driver
JdbcUrl=jdbc:interbase://192.168.1.xxx/d:/directorio/basedatos.ib

Le he puesto su usuario, contraseña y no toco el puerto. Las sentencias SQL que cada uno se las modifique como quiera.

Y para que el servicio RunRLC no se vea, he creado un archivo android.vbs que es un script para ocultar la consola de sistema cuando ejecuto el RunRLC.bat. He creado un acceso directo y lo he llevado a Inicio de Windows. El contenido del script vbs es:

set objshell = createobject("wscript.shell")
objshell.run "RunRLC.bat",vbhide

Un saludo a todos y otra vez gracias a dhernandez por dejarnos tan claro el tema.
 

Heppy

Active Member
Licensed User
Longtime User
No lo he probado pero creo que puede ser algo así:

DriverClass=org.firebirdsql.jdbc.FBDriver
JdbcUrl=jdbc:firebirdsql://ipservidor/d:/directorio/basedatos.fdb

Y te bajas el JayBird de aqui. Copias el jar correspondiente a la carpeta jdbc_driver

http://www.firebirdsql.org/en/jdbc-driver/
 
Last edited:

Heppy

Active Member
Licensed User
Longtime User
Estoy intentando hacerlo con Firebird y no hay forma de hacerlo.

He probado con varios equipos, con varios jdk, con varios Jaybird y no lo consigo.

Si alguien lo ha hecho, puede poner un tutorial o los pasos para conseguirlo?.

Gracias
 

Heppy

Active Member
Licensed User
Longtime User
Bueno, pues no.

Me da errores todo el rato.

Le hago un 127.0.0.1:17178/?method.test y se rompe el servidor.

Ya no sé si hay que poner solo una libreria jar 2.2.4 en jdbc_driver, si tengo que meter todo.

En fin haciendo prueba y me estoy volviendo loco
 
Last edited:

Heppy

Active Member
Licensed User
Longtime User
Finalmente solucionado
Una tonteria como un piano

Copiar Jaybird y JayBird-full a la carpeta jdbc-driver

En el fichero config.properties tenía
B4X:
jdbcUrl=jdbc:firebirdsql://192.168.1.162/c:/Android/UMBELA.FDB

Ahora
B4X:
JdbcUrl=jdbc:firebirdsql://192.168.1.162/c:/Android/UMBELA.FDB

La J en minusculas erá el problema

[Solucionado]
 
Last edited:

achtrade

Active Member
Licensed User
Longtime User
Hola,

Como sería para conectarme a un MS SQL 2008 R2 instalado en un servidor Windows Server 2008 R2 ?, favor lo más explicito que se pueda porque estoy comenzando a utilizar esta aplicación b2a.

Me interesal la configuración en el servidor y en la app android.

Gracias.
 

Heppy

Active Member
Licensed User
Longtime User
Vamos por partes.
El RDC Server lo tienes aqui:
http://www.b4x.com/android/files/RDC-Server.zip
El archivo jdbc:
http://sourceforge.net/projects/jtds/files/
El RDC Client aqui:
http://www.b4x.com/android/forum/attachments/rdc-client-zip.23173/
Y necesitas la libreria ByteConverter, aqui:
http://www.b4x.com/android/forum/threads/byteconverter-library.6787/#post-39339

1 - Servidor:
Extraes el RDC Server en una carpeta.
En la carpeta jdbc_driver metes el jtds.jar que te has bajado de sourceforge
Editas el archivo config.properties
B4X:
DriverClass=net.sourceforge.jtds.jdbc.Driver
JdbcUrl=jdbc:jtds:sqlserver://127.0.0.1:1433/Facture;instance=SQLEXPRESS 'Tu base
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
sql.select_inst=SELECT ID,TIPO,NUMERO,SITUACION,ZONA FROM situaciones
'Vas añadiendo sentencias que luego utilizarás (siempre empiezan por sql.)
Editas RunRLC.bat
B4X:
"C:\Program Files\Java\jdk1.7.0_45\bin\java" -Xmx256m -cp .;libs\*;jdbc_driver\* anywheresoftware.b4a.remotedatabase.RemoteServer
En c:\Program Files.... pones la ruta donde tienes el java.exe del jdk
Ejecuta RunRLC

En el cliente android, te bajas el RDC client y modificas a tu gusto. Ten en cuenta que si haces una nueva aplicacion, tienes que añadirle el moduloDBRequestManager al proyecto.
En este caso la sentencia sql sería
B4X:
  If reqManager.IsInitialized Then
    Operacion=0
    ToastMessageShow("Espere, por favor. ACTUALIZANDO", False)
    Dim cmd As DBCommand
      Dim Name As String
      cmd.Initialize
      cmd.Name = "select_inst"
      cmd.Parameters = Array As Object(Name)
      reqManager.ExecuteQuery(cmd, 0, Null)
  End If
End Sub

Sub JobDone(Job As HttpJob)
    If Job.Success = False Then
        'Log("Error: " & Job.ErrorMessage)
        ToastMessageShow("Hable con el Administrador. No es posible la conexión",True)
    Else  
        If Job.JobName = "DBRequest" Then
 
           If sqlCM.IsInitialized=False Then sqlCM.Initialize(File.DirInternal,"CM.db",True)
          sqlCM.ExecNonQuery("DELETE From CM")
          Dim result As DBResult = reqManager.HandleJob(Job)
         'reqManager.PrintTable(result)
          sqlCM.BeginTransaction
         For Each records() As Object In result.Rows
            sqlCM.ExecNonQuery2("INSERT INTO CM VALUES(?,?,?,?,?)",Array As Object(records(0),records(1),records(2),records(3),records(4)))
         Next 
         sqlCM.TransactionSuccessful
         sqlCM.EndTransaction

Es un ejemplo que tengo por ahí.

PD: No he utilizado MS Server con Android, con lo que espero te funcione.
 

achtrade

Active Member
Licensed User
Longtime User
Gracias por la respuesta, en el lado del servidor lo tengo más o menos claro, solo tengo que hacer prueba, pero en el lado del cliente que hago o donde lo pongo la libreria ByteConverter, o más bien, como agrego esa librería al cliente ?
 

Heppy

Active Member
Licensed User
Longtime User
Tienes que poner los ficheros jar y xml en la carpeta libraries donde tienes instalado B4A. Por ejemplo C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries

Si tienes el proyecto abierto, luego sobre la pestaña libs le das a Refresh y la seleccionas.
 
Last edited:

achtrade

Active Member
Licensed User
Longtime User
Perfecto. Ya puedo abrir el cliente ejemplo si errores. Ahora solo necesito probar todo junto y ver que pasa.

Gracias.
 
Top