Spanish [Resuelto] jRDC2 - (Remote Database Connector)

Vania Contreras

Member
Licensed User
el siguiente codigo funcionaba sin problema
the following code worked without problem
B4X:
Public Sub GetArticulos
    Try
            bdLocal
            Dim bandera As Boolean
            Dim strquery As String
        
        Dim req As DBRequestManager = CreateRequest
        Dim cmd As DBCommand = CreateCommand("get_all_articulos", Null)
        Log("Paso2")
        Wait For (req.ExecuteQuery(cmd, 0, Null)) JobDone(j As HttpJob)
        Log("paso3")
        bandera= False
        If j.Success Then
            req.HandleJobAsync(j, "req")
            Wait For (req) req_Result(res As DBResult)
''        req.PrintTable(res)
        
            If db.IsInitialized = False Then
                db.Initialize(ruta , "siscom.db", True)
            End If
'            createArticulos
            ' evito duplicados
            strquery = "delete from ARTICULOS"
            db.AddNonQueryToBatch(strquery,Null)
            Dim SenderFilter As Object = db.ExecNonQueryBatch("sql")
            Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
            
            
            For Each row()  As Object In res.Rows
                strquery = "insert into ARTICULOS values (?,?,?)"
'                Log(strquery)
                bandera= True
                db.AddNonQueryToBatch(strquery,Array(row(0),row(1),row(2)))
            Next
            Dim SenderFilter As Object = db.ExecNonQueryBatch("sql")
            Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean)
            Log("NonQuery: " & Success)
            tt.msgAlert("Sincronizando catalogos","Se ha actualizado el catalogo de Articulos",1)
            db.ExecNonQuery("insert into bitacora select  date('now'),'sincroniza','Articulos ok'")
        Else
            Log("ERROR: " & j.ErrorMessage)
            tt.msgAlert("Sincronizando catalogos","Ocurrio un problema, no se pudo sincronizar el catalogo de articulos",1)
            db.ExecNonQuery("insert into bitacora select  date('now'),'sincroniza','Articulos fail'")
        End If
        j.Release
        If bandera Then
            Log("Articulos ok")
        End If
    Catch
        db.ExecNonQuery("insert into bitacora select  date('now'),'log','Fallo algo al importar articulos'")
        Log(LastException)
    End Try
End Sub

pero ahora, despues de descargar algunas actualizaciones recomendadas, me aparece el siguiente mensaje
but now, after downloading some recommended updates, I get the following message

Paso2
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
ResponseError. Reason: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'null'., Response: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /rdc. Reason:
<pre> com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
</html>
paso3
ERROR: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /rdc. Reason:
<pre> com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
Alguien tiene alguna idea por la cual puede estar ocurriendo esto
Does anyone have any idea why this may be happening?
 

Vania Contreras

Member
Licensed User
Cúal es el query de "get_all_articulos" ?
B4X:
sql.get_all_articulos=SELECT ncia,id_articulo,art_descripcion FROM android_articulos

el jrdc me devuelve en la consola

B4X:
feb 11, 2019 6:31:36 PM com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
INFORMACIÓN: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 20000, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1hgeby9a01pwm1e115ub5ms|5ecddf8f, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.microsoft.sqlserver.jdbc.SQLServerDriver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1hgeby9a01pwm1e115ub5ms|5ecddf8f, idleConnectionTestPeriod -> 600, initialPoolSize -> 3, jdbcUrl -> jdbc:sqlserver://192.168.40.91;databaseName=siscom;instanceName=salvatierra, maxAdministrativeTaskTime -> 0...
*** Command not found: null
(SQLServerException) com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'null'.
Command: , took: 1272ms, client=192.168.1.100
 
Last edited:

Vania Contreras

Member
Licensed User
Cúal es el query de "get_all_articulos" ?
esto seria todo completo
B4X:
#DATABASE CONFIGURATION
#DriverClass=com.mysql.jdbc.Driver
#JdbcUrl=jdbc:mysql://localhost/test?characterEncoding=utf8
User=sa
Password=server
#Java server port
ServerPort=12345

#example of MS SQL Server configuration:
#DriverClass=net.sourceforge.jtds.jdbc.Driver

# Esta coneccion es para la bd de pruebas    <------------------------
#DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
#JdbcUrl=jdbc:sqlserver://192.168.1.205;databaseName=siscom;instanceName=pruebas

# Esta coneccion es para la bd de Mexico    <------------------------
#DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
#JdbcUrl=jdbc:sqlserver://192.168.1.205;databaseName=siscom;instanceName=mexico


# Esta coneccion es para la bd de salvatierra    <-----------------------------
DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
JdbcUrl=jdbc:sqlserver://192.168.40.91;databaseName=siscom;instanceName=salvatierra

#example of postegres configuration:
#JdbcUrl=jdbc:postgresql://localhost/test
#DriverClass=org.postgresql.Driver

#SQL COMMANDS

sql.get_all_articulos=SELECT ncia,id_articulo,art_descripcion FROM android_articulos
sql.get_disponible=select * from android_disponible
sql.get_traspasos_entrada=select * from android_traspasosEntrada where id_suc_dest=1
sql.get_valida_salida=select * from android_validaSalida
sql.get_sucursales=select * from android_sucursales_activas
sql.get_folio_traspaso=SELECT isnull(max(cast(right(traspaso,len(traspaso)-(len(id_suc_dest)+len(id_suc_origen))) as integer)) +1,1)+1 maxi from andoid_folios_traspasos WHERE idCia=? and id_suc_DEST=? and len(traspaso)<=8 order by 1 desc
sql.set_inserta_Rollo_Traspaso_kardex=insert into android_insert_traspaso values (?,?,?,getdate())
sql.set_inserta_Rollo_Traspaso_salida=insert into android_traspaso_sale values (?,?,?,?,?,?,?,getdate())
 

XbNnX_507

Active Member
Licensed User
Longtime User
sql.get_all_articulos=SELECT ncia,id_articulo,art_descripcion FROM android_articulos;

Que tal si empezamos ah ponerle el ; al final de cada sentencia sql.

Supongo que tu CreateCommand
Esta de esta manera:

B4X:
Sub CreateCommand ( cmdName As String, args() As Object ) As DBCommand
    Dim cmd As DBCommand
    cmd.Initialize
    cmd.Name = cmdName
    cmd.Parameters = args
    If args = Null Then cmd.Parameters = Array()
    Return cmd
End Sub
 

Vania Contreras

Member
Licensed User
B4X:
sql.get_all_articulos=SELECT ncia,id_articulo,art_descripcion FROM android_articulos
Que tal si empezamos ah ponerle el ; al final de cada sentencia sql.

Supongo que tu CreateCommand
Esta de esta manera:

B4X:
Sub CreateCommand ( cmdName As String, args() As Object ) As DBCommand
    Dim cmd As DBCommand
    cmd.Initialize
    cmd.Name = cmdName
    cmd.Parameters = args
    If args = Null Then cmd.Parameters = Array()
    Return cmd
End Sub
en realidad mi codigo es
B4X:
Sub CreateCommand(Name As String, Parameters() As Object) As DBCommand
    Dim cmd As DBCommand
    cmd.Initialize
    cmd.Name = Name
    If Parameters <> Null Then cmd.Parameters = Parameters
    Return cmd
End Sub
probe el que tu ejemplificas pero igual me devuelve el mismo error

en el jrdc

B4X:
*** Command not found: null
(SQLServerException) com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'null'.
Command: , took: 141ms, client=192.168.1.100

y en b4a

B4X:
Paso2
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
ResponseError. Reason: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'null'., Response: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /rdc. Reason:
<pre>    com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
</html>
paso3
ERROR: <html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 500 com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</title>
</head>
<body><h2>HTTP ERROR 500</h2>
<p>Problem accessing /rdc. Reason:
<pre>    com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword &apos;null&apos;.</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a><hr/>
</body>
</html>

y tambien agrege ";" al final de las instrucciones sql

B4X:
sql.get_all_articulos=SELECT ncia,id_articulo,art_descripcion FROM android_articulos;
 

XbNnX_507

Active Member
Licensed User
Longtime User
Asegurate de no mantener el programa ( notepad, notepadd++, etc) en donde estas editando el config.properties abierto. Ya que al tenerlo abierto el programa no logra cargar los cambios hechos.

Haz los cambios guardas y cierras. y si es posible vuelves a ejecutar el JRDC.jar
 

OliverA

Expert
Licensed User
Longtime User
Which version of jRDC2 are you using?
 

Vania Contreras

Member
Licensed User
Asegurate de no mantener el programa ( notepad, notepadd++, etc) en donde estas editando el config.properties abierto. Ya que al tenerlo abierto el programa no logra cargar los cambios hechos.

Haz los cambios guardas y cierras. y si es posible vuelves a ejecutar el JRDC.jar
si, asi lo hago para evitar problemas
 

Vania Contreras

Member
Licensed User
Asegurate de no mantener el programa ( notepad, notepadd++, etc) en donde estas editando el config.properties abierto. Ya que al tenerlo abierto el programa no logra cargar los cambios hechos.

Haz los cambios guardas y cierras. y si es posible vuelves a ejecutar el JRDC.jar
 

Vania Contreras

Member
Licensed User
Asegurate de no mantener el programa ( notepad, notepadd++, etc) en donde estas editando el config.properties abierto. Ya que al tenerlo abierto el programa no logra cargar los cambios hechos.

Haz los cambios guardas y cierras. y si es posible vuelves a ejecutar el JRDC.jar
tienes alguna otra idea?
 

josejad

Expert
Licensed User
Longtime User
Is 'ncia' a date field? Note that there is a jRDC2 version 2.22 that solves a problem with date fields with NULL values

Qué tipo de campo es 'ncia'? Tuve un problema el otro día con un campo de tipo fecha si era NULL. Y me pasaba lo mismo, el comando que devolvía jRDC2 era Null.

No me había dado cuenta de que el post estaba en el foro de español
 
Last edited:

OliverA

Expert
Licensed User
Longtime User
Dim cmd As DBCommand = CreateCommand("get_all_articulos", Null)
Should be
B4X:
Dim cmd As DBCommand = CreateCommand("get_all_articulos", Array())
Null instead of Array() will cause the issue. If you don't like that Null is causing an issue you can modify CreateCommand as per @XbNnX_507's post #5.
 

Vania Contreras

Member
Licensed User
Is 'ncia' a date field? Note that there is a jRDC2 version 2.22 that solves a problem with date fields with NULL values

Qué tipo de campo es 'ncia'? Tuve un problema el otro día con un campo de tipo fecha si era NULL. Y me pasaba lo mismo, el comando que devolvía jRDC2 era Null.

No me había dado cuenta de que el post estaba en el foro de español
si ncia es un campo, lo mas curioso que funcionaba sin problemas, hasta que actualice y descargue los complementos recomendados
 

josejad

Expert
Licensed User
Longtime User
Pero es un campo de fecha? De todas formas, echa un ojo a lo que indica OliverA, que es un fenómeno con jRDC2
 

Vania Contreras

Member
Licensed User
Is 'ncia' a date field? Note that there is a jRDC2 version 2.22 that solves a problem with date fields with NULL values

Qué tipo de campo es 'ncia'? Tuve un problema el otro día con un campo de tipo fecha si era NULL. Y me pasaba lo mismo, el comando que devolvía jRDC2 era Null.

No me había dado cuenta de que el post estaba en el foro de español
tienes el link de la version 2.2?
 
Top