Spanish Conexion JdbcSQL (Solucionado)

benji

Active Member
Licensed User
Longtime User
Buenas tardes a todos,
estoy tratando de conectarme de esta forma

ya que estaba usando una conexion mas antigua pero me esta dando problemas, pero no logro conectar, al parecer tengo problemas en esta parte:
Private jdbcUrl As String = "jdbc:mysql://xxx.255.xx.65:3306/difem"

estoy con el ejemplo del foro tratando de conectar y adaptarlo a mi servidor, que debo poner ahi? he visto varios ejemplo, algunas van con una url y otros van como puse yo... estoy confundido a esta altura.

de antemano, muchas gracias.
 

benji

Active Member
Licensed User
Longtime User
desde mi aplicación en este momento me puedo conectar sin problemas a la BD, y en esta estoy usando MSMARIADB o MSMySQL, pero estas tienen problemas para manejar varios registros y estoy perdiendo registros en los select que estoy trayendo.
Select en Workbenk = 88 registros, en la app llegan 85 en la QueryAsync (data.size), por este motivo necesito otra conexion.
 

OliverA

Expert
Licensed User
Longtime User
No tiene sentido que la misma consulta a la misma base de datos arroje resultados diferentes. ¿Está seguro de que en ambos casos está utilizando la misma declaración? ¿Está seguro de que en ambos casos se está conectando exactamente a la misma base de datos? ¿Cómo está contando sus registros?

Original:
It makes no sense that the same query to the exact same database return different results. Are you sure in both cases you are using the same statement? Are you sure in both cases you are connecting to the exact same database? How are you counting your records?
 

benji

Active Member
Licensed User
Longtime User
Si, es la misma consulta, por eso el problema. Esa librería la uso hace mucho tiempo y no he tenido problemas, o por lo menos nunca me di cuenta. Ahora veo que tengo menos registros en el cursor que los que hay en la BD.

Por esto mismo, quiero cambiar la conexión a jdbcSql
 

OliverA

Expert
Licensed User
Longtime User
Por esto mismo, quiero cambiar la conexión a jdbcSql
Oh.....

"jdbc: mysql: //xxx.xxx.xxx.xxx/difem" Deberías hacerlo. El número de puerto solo es necesario si el servidor no está utilizando el puerto predeterminado. Además, asegúrese de que la versión del controlador jdbc del conector / j sea inferior a 8
 

josejad

Expert
Licensed User
Longtime User
Hola:

al parecer tengo problemas en esta parte
¿Qué problemas te da? ¿Qué muestra el log? Tu servidor permite conexiones remotas al puerto 3306? La mayoría de hostings no lo permiten.

pero estas tienen problemas para manejar varios registros y estoy perdiendo registros en los select que estoy trayendo
No creo que mysql tenga problemas para manejar varios registros, si no, nadie las usaría, como dice OliverA, el problema debe estar en otro parte. ¿Qué consulta usas en el workbench y cómo la usas en tu app? ¿Podrías exportar tus 88 registros (quitando los datos sensibles) y subirlos para ver si vemos el problema de por qué no te devuelve los 3 faltantes?

Por lo demás, comprueba lo que indica Oliver con la versión de tu conector, que de esto sabe un montón.

saludos,
 

benji

Active Member
Licensed User
Longtime User
Oh.....

"jdbc: mysql: //xxx.xxx.xxx.xxx/difem" Deberías hacerlo. El número de puerto solo es necesario si el servidor no está utilizando el puerto predeterminado. Además, asegúrese de que la versión del controlador jdbc del conector / j sea inferior a 8

esto ocupando este controlador mysql-connector-java-5.1.34-bin
"jdbc: mysql: //xxx.xxx.xxx.xxx/difem" en esta declaracion, difem seria la bd o no?
 

benji

Active Member
Licensed User
Longtime User
Hola:


¿Qué problemas te da? ¿Qué muestra el log? Tu servidor permite conexiones remotas al puerto 3306? La mayoría de hostings no lo permiten.


No creo que mysql tenga problemas para manejar varios registros, si no, nadie las usaría, como dice OliverA, el problema debe estar en otro parte. ¿Qué consulta usas en el workbench y cómo la usas en tu app? ¿Podrías exportar tus 88 registros (quitando los datos sensibles) y subirlos para ver si vemos el problema de por qué no te devuelve los 3 faltantes?

Por lo demás, comprueba lo que indica Oliver con la versión de tu conector, que de esto sabe un montón.

saludos,

el log solo muestra que la conexion no fue existosa, estoy usando el ejemplo de conexion del foro.
uso la libreria hace mucho tiempo msmysql o msmariadb, la consulta que hago es muy simple, select * from lote where codigo = 2000002; esa consulta en workbench trae 88 registros, en la app trae 85.

MySQL:
dbM.QueryASync("Select * from lote where codigo = 2000006","Lote1")

Case "Lote1"
            If data.Size > 0 Then
                Label1.Text = "0 / " & (data.Size - 1)
                Main.DBLocalWMS.BeginTransaction
                Try
                For i = 0 To data.Size - 1
                    cur = data.Get(i)
                    AuxCodigo = cur.Get("codigo")
                    AuxLote = cur.Get("lote")
                    AuxUMB = cur.Get("umb")
                    AuxVenc = cur.Get("vencimiento")
                    Main.DBLocalWMS.ExecNonQuery2("Insert into Lote values(?,?,?,?)",Array As Object(AuxCodigo,AuxLote,AuxUMB,AuxVenc))
                    
                  
                Next
                    Main.DBLocalWMS.TransactionSuccessful
                Catch
                    Log(LastException)
              End Try
               Main.DBLocalWMS.EndTransaction
              
                ToastMessageShow("Cargar Lote1 Terminada",True)

la conexión esta abierta en el servidor, en este momento me puedo comunicar desde la app sin problemas usando otra librería.
Tambien me parece raro que no devuelva todos los registros, pero ya descarte varias cosas y no encuentro nada extraño.
al principio pense que podria ser que los datos estuvieran mal y se cayera por ahi, pero no, el data.size viene con 85, por lo tanto los ultimos 3 no los procesa.

en otra consulta, cambiando el código, en workbench tengo 383 registros, y a la app llegan 303
 

OliverA

Expert
Licensed User
Longtime User
1) Parece que, sin darme cuenta, dejé espacios en la URL de JDBC. Asegúrate de que no haya espacios
B4X:
jdbc:mysql://xxx.xxx.xxx.xxx/difem
2) Debe publicar todos y cada uno de los mensajes de error que se emiten al usar JdbcSQL. Sin ellos, la ayuda será difícil
 

josejad

Expert
Licensed User
Longtime User
Nunca lo he usado, pero creo que sí, al menos en jRDC2 es así, así que supongo que el funcionamiento es similar.

Como te indica OliverA, pon los mensajes de error de JdbcSQL, si no me equivoco, para verlos debes ver los logs sin filtrar (quita el check de Filtrar en los logs)

1614971677689.png
 

benji

Active Member
Licensed User
Longtime User
gracias a todos por la ayuda, me puede conectar y ahora aparecen los 88 registros .... jajaja... algo pasa con la otra libreria, pero bueno ya esta, y por lo que no veo sera muy dificl pasarme a esta y pareciera ser mas rapida.

una ultima duda si me pueden ayudar, en el log veo los siguientes mensajes y me dejaron un poco preocupado, es normal, o tengo un controlado antiguo o algo asi?

Class com.mysql.jdbc.ConnectionImpl failed lock verification and will run slower.
Class com.mysql.jdbc.JDBC4Connection failed lock verification and will run slower.
Class com.mysql.jdbc.DatabaseMetaData failed lock verification and will run slower.
Class com.mysql.jdbc.MysqlIO failed lock verification and will run slower.
[socket][/192.168.1.112:60036] connected

Class com.mysql.jdbc.StatementImpl failed lock verification and will run slower.
Class com.mysql.jdbc.ResultSetRow failed lock verification and will run slower.
Class com.mysql.jdbc.ResultSetImpl failed lock verification and will run slower.
Class com.mysql.jdbc.EscapeProcessor failed lock verification and will run slower.
Class com.mysql.jdbc.PreparedStatement failed lock verification and will run slower.
 
Top