Spanish Conexion con MariaDB for dummies

Jean Hendrickx

Member
Licensed User
Hola amigos, por cuestiones de salud tuve un par de semanas de "reposo" (Sesion de quimioterapia), ahora desempolvando mi proyectico inicial, retomo:

Que necesito para conectarme a mariaDB (B4J)?
1.- Ya tengo programado una pequeña carga de datos, que pregunta por un Codigo, Descripcion, Costo, Precio, Fecha y Cantidad
2.- He descargado MariaDB y he creado -localmente, usando HeidiSQL- una Base de Datos y una tabla, tengo un usuario y clave de acceso, una dirección IP y un puerto de red.
3.- Además he descargado un conector mariadb-java-client-2.4.2.jar el cual he copiado en la carpeta Libraries de B4J

Pensaba que con MariaDB y el conector, además de mi programita en B4J tenía todo resuelto ... Pero, leyendo veo que necesito otras cosas que desconozco, como Xamp; entonces mi duda, hay algún instructivo for dummies (pero de los tontos, tontos, eh?) que me digan que hacer? Porque hay unos (Muchos!) tutoriales que aparentemente son muy sencillos (como este: https://www.b4x.com/android/forum/t...-mariadb-and-oracle-databases.107545/#content ) que comienzan sencillo y luego mencionan cosas que desconozco como Xamp, que leyendo veo que es una especie de PHP y Perl con MariaDB (Pensé que ya tenia MariaDB!!!), y ahí se me enrreda totalmente el sedal ... Auxilio!!!

PD: Seguramente más de uno se partirá de la risa (y quizás yo mismo lo haga más adelante), pero por ahora no termino de entender el panorama completo ... sorry!!
 

José J. Aguilar

Expert
Licensed User
Hola Jean:

Me alegro de que estés ya algo mejor.
A ver, entiendo que la aplicación la estás haciendo desde B4J, ¿correcto?
Si ya tienes MariaDB instalado y puedes acceder a ella con HeidiSQL, no te hace falta nada más.
La mejor forma de acceder a una base de datos, es precisamente una aplicación intermedia hecha precisamente en B4J, que se llama jRDC2
Como ya lo he contado en algún otro post, y te lo iba a poner aquí, mejor he hecho un pequeño tutorial que puedes ver aquí

Si vas teniendo dudas o problemas, coméntalas en este hilo.

más de uno se partirá de la risa
Nadie se va a reír de tí, así hemos estado todos...

saludos,
 

Jean Hendrickx

Member
Licensed User
Gracias anticipadas por tu gentil respuesta. A ver si voy comprendiendo:

1.- Necesito instalar jRDC2 que en realidad son dos aplicaciones:

1.1.- Una aplicación "server" que recibe las peticiones (En este ejemplo, veo que hay un 'programa jRDC2.b4j' y varios 'programas *.bas' como interpreto eso? Esto es solo curiosidad, pero el 'server' es el 'programa' jRDC.b4j o cual?

1.2.- Por otro lado debo tener el "driver" jar, en mi caso uso MariaDB, tengo instalado mariadb-java-client-2.4.2.jar, debo instalar el *.jar para MySQL o me sirve con el tengo ya instalado? El enlace que proporcionas indica que debo instalar MySQL, pero segun he leido, parece que recomiendan mas instalar/usar MariaDB que MySQL, esa dualidad me confunde

1.3.- El punto:

- Añade (más bien, modifica en el programa que has descargado) la referencia al archivo .jar con:

#AdditionalJar: mysql-connector-java-5.1.27-bin

Eso, es en B4J, que archivo abro??

La pestaña "archivos" es en B4j?

1.4.- A partir de la linea 12, indicas que irán las consultas SQL que quieres hacer... no termino de entender esa parte, si me dices que un boton tiene una logica asociada de hacer un comando SQL INSERT o UPDATE para grabar unos datos, lo logro visualizar; pero tener una 'lista' de comandos genéricos se escapa de mi visión... traté de ver tu ejemplo, pero me perdí ... muchas dudas.

2.- La parte cliente, prefiero dejarla para más adelante, si no logro entender este galimatías menos entenderé aquello, y, seguramente, si entiendo esto, lo otro se me hará más sencillo.

Creo que tu ejemplo/tutorial me aclaró algunas dudas y me generó otras ... en mi lenguaje anterior, era el lenguaje, un 'driver' para la BD y más nada.

De nuevo, muchas gracias; seguiré leyendo para ir matando tanta incultura, jajajaja!
 

José J. Aguilar

Expert
Licensed User
1.- Necesito instalar jRDC2 que en realidad son dos aplicaciones:
No exactamente, jRDC2 es un programa hecho en B4J

1.1.- Una aplicación "server" que recibe las peticiones (En este ejemplo, veo que hay un 'programa jRDC2.b4j' y varios 'programas *.bas' como interpreto eso? Esto es solo curiosidad, pero el 'server' es el 'programa' jRDC.b4j o cual?
Mira el video de ESTE EJEMPLO, a ver si lo ves más claro. Por un lado tengo abierto B4J ejecutando el programa jRDC2 (que hace de servidor), y por otro tengo abierto B4A que hace las peticiones a jRDC2 (verás que cuando hago peticiones desde B4A, salen comandos en el log de B4J

mariadb-java-client-2.4.2.jar
Con ese debería valerte, cópialo en la carpeta de librerías adicionales

Eso, es en B4J, que archivo abro??
Sí, en B4J (yo tengo otro, tengo mysql-connector-java-5.1.44.bin) pero el tuyo creo que debería valer

1619729233940.png


La pestaña "archivos" es en B4j?
Sí, en B4J, pulsa con el botón derecho en config.properties y edítalo con un editor de texto
1619729342856.png


pero tener una 'lista' de comandos genéricos se escapa de mi visión
Tú tienes una lista de comandos, en mi caso, por ejemplo: sql.getEvents, sql.updateEvents, ... Pues cuando pulso el botón para "Obtener eventos", llamo a getEvents; si quiero actualizar, llamo a updateEvents, ....

2.- La parte cliente, prefiero dejarla para más adelante, si no logro entender este galimatías menos entenderé aquello, y, seguramente, si entiendo esto, lo otro se me hará más sencillo.
Correcto, lo primero es echar a andar el servidor y recibir el mensaje de que está conectado "successfully"
 

Jean Hendrickx

Member
Licensed User
Bueno, bueno, aunque aun tengo lagunas, ya entiendo MUCHAS MAS COSAS!! gracias!!

El servidor está corriendo:

RemoteServer is running (04/29/2021 17:33:55)
Error fetching connection.


Con errores, me imagino que no he colocado de forma adecuada algun parámetro del servidor, mi usuario y mi contraseña para la DB demo son: root y root.

También permití el acceso en el firewall del puerto 8090. Ya estoy entendiendo: mariadb-java-client-2.4.2.jar es un manejador o programa que accede a la base de datos, y jDBC2 es un programa que hace de servidor, corriendo en una tarea (instancia) separada de B4J, que se encargará de 'despachar' las solictudes hechas, inicialmente por el browser y luego por mi programa B4J.

La modificación del archivo config.properties lo hice con un editor externo, me imagino que eso no importa; pero creo que no logré adaptar el archivo a mi manejador jar de mariaDB, imagino que debo cambiar mysql por mariaDB pero igual me da error (Mi usuario es root y la clave root en la DB):

#DATABASE CONFIGURATION
DriverClass=com.maria.jdbc.Driver
JdbcUrl=jdbc:maria://localhost/test?characterEncoding=utf8
User=root
Password=root
#Java server port
ServerPort=8090

Gracias anticipadas, ya entiendo mucho más el por donde vienen las cosas... que era parte de mi duda ...
 

José J. Aguilar

Expert
Licensed User
mariadb-java-client-2.4.2.jar es un manejador o programa que accede a la base de datos, y jDBC2 es un programa que hace de servidor, corriendo en una tarea (instancia) separada de B4J, que se encargará de 'despachar' las solictudes hechas, inicialmente por el browser y luego por mi programa B4J.
Correcto¡¡

Como estás recibiendo un error al conectar a la base de datos, y como tampoco es que sea un experto, si quieres usa el mismo conector que estoy usando yo (yo también uso MariaDB, pero se puede usar el conector de MySql), y así puedes poner el config.properties igual que el mío. Bájalo de aquí:

Y ahora ya puedes poner el config properties como:
B4X:
#DATABASE CONFIGURATION
DriverClass=com.mysql.jdbc.Driver
JdbcUrl=jdbc:mysql://localhost:3306?characterEncoding=utf8&useSSL=false
 

oparra

Well-Known Member
Licensed User
Un comentario a ciertas dudas para algunos miembros.

JRDC2 esta basado en Jserver

Jserver es un servidor websocket basado en Jetty



Queria comentar esto por que he visto muchos usuarios instalar XAMP, Wampsever, Laragon, apache, IIS u otro servidor web, por lo que no es necesario.

Jserver es un servidor websocket Http.

Solo debe instalar Mariadb u Mysql como base de datos, Java para ejecutar su servidor JRDC2

y abrir el puerto que escucha su JRDC2 en su firewall

Ahora bien si desea interactuar con otros lenguajes como ejemplo PHP se puede extender las solicitudes a CGI, si lo desea, pero esto es otro tema.

Saludos.
 
Last edited:

edgar_ortiz

Active Member
Licensed User
Un comentario a ciertas dudas para algunos miembros.

JRDC2 esta basado en Jserver

Jserver es un servidor websocket basado en Jetty



Queria comentar esto por que he visto muchos usuarios instalar XAMP, Wampsever, Laragon, apache, IIS u otro servidor web, por lo que no es necesario.

Jserver es un servidor websocket Http.

Solo debe instalar Mariadb u Mysql como base de datos, Java para ejecutar su servidor JRDC2

y abrir el puerto que escucha su JRDC2 en su firewall

Ahora bien si desea interactuar con otros lenguajes como ejemplo PHP se puede extender las solicitudes a CGI, si lo desea, pero esto es otro tema.

Saludos.

Pregunta:

En tu experiencia, cual ODBC Driver? se debería de utilizar?

Saludos,

Edgar
 

oparra

Well-Known Member
Licensed User
Pregunta:

En tu experiencia, cual ODBC Driver? se debería de utilizar?

Saludos,

Edgar
primero por que ODBC?

o te refieres Connector/J de Jserver.

Bueno según mi experiencia todo depende de la versión de MySQL o MariaDB.

En nuestro caso tuvimos ciertos problemas con algunos conectores java (Connector/J) que eran incompatibles en ciertas versiones de base de datos MySQL y MariaDB.

Ejemplo:
La versión 5.x.x que sugiere @José J. Aguilar es una de las compatibles con las versiones de Mysql 5.x y mariaDB anteriores 10.5.

pero ambas base de datos ya están diciendo que su compatibilidad se están alejando una de otras desde las versiones mysql 8.x y MariaDB 10.5.

mi sugerencia es utilizar el conector/j de la base de datos que vas usar y ver las observaciones que hacen con respecto a la conexión de la base de datos en Java.

Saludos.
 

oparra

Well-Known Member
Licensed User
Perdón, solo un comentario mas para dejar claro lo que he dicho:

En el caso de compatibilidad con versión java y versión Mysql antes de usar el connect/J:

MariaDB

MYSQL

también en otros tipos de base de datos encontraras notas de compatibilidad (SQL Server, ORACLE, Sybase, etc.).

Y pido disculpas por ocupar este post para hacer mis comentarios.

y eso es todo, espero que ayude entender mejor el uso de base de datos con JRDC2.

Saludos.
 
Last edited:
Top