Android Question Error a ejecutar consulta JdbcSQL en modo Release

JOSE LUIS REAL MORENO

New Member
Licensed User
Longtime User
Hola a Tod @ s:

Soy un vetusto programador en proceso de reciclado y me estoy adentrando en el mundo del B4A.

Estoy haciendo una aplicación que tiene que obtener datos de una base Sql para lo que utilizo la librería JdbcSQL (ver. 1.5)

Tengo el siguiente código que en modo Debug me funciona correctamente:

B4X:
Public Sub CompruebaRegistrosNuevos
    Dim SqlCuentaRegistros As String
    Dim NumeroDeOrdenesNuevas As Int
    If mysql.IsInitialized Then
        If Almacen="0" Then
            SqlCuentaRegistros="SELECT Count(*) FROM DocCli T0 WHERE (T0.VerialID)>" & UltimaOrden
    
        Else
            SqlCuentaRegistros="SELECT Count(*) FROM DocCli T0 WHERE (T0.VerialID)>" & UltimaOrden &" And (T0.ID_Almacen)=" & Almacen
        End If

        NumeroDeOrdenesNuevas = mysql.ExecQuerySingleResult(SqlCuentaRegistros)
        If NumeroDeOrdenesNuevas<>0 Then
            CargaDatosPedidosNuevos
        End If
        
    End If
End Sub


Simplemente determina el número de ordenes nuevas para un determinado almacén y como he comentado, en modo Debug funciona correctamente.

Sin embargo, en modo Release, la línea 12 que he marcado genera el siguiente error:

main_compruebaregistrosnuevos (java line: 952)
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1460)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:108)
at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at net.sourceforge.jtds.jdbc.SharedSocket.sendNetPacket(SharedSocket.java:686)
at net.sourceforge.jtds.jdbc.RequestStream.putPacket(RequestStream.java:570)
at net.sourceforge.jtds.jdbc.RequestStream.flush(RequestStream.java:518)
at net.sourceforge.jtds.jdbc.TdsCore.executeSQL(TdsCore.java:1080)
at net.sourceforge.jtds.jdbc.TdsCore.microsoftPrepare(TdsCore.java:1219)
at net.sourceforge.jtds.jdbc.JtdsConnection.prepareSQL(JtdsConnection.java:708)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:1028)
at anywheresoftware.b4j.objects.SQL.ExecQuery2(SQL.java:343)
at anywheresoftware.b4j.objects.SQL.ExecQuerySingleResult2(SQL.java:391)
at Whs.Verial.main._compruebaregistrosnuevos(main.java:952)
at Whs.Verial.main$ResumableSub_Activity_Create.resume(main.java:536)
at anywheresoftware.b4a.BA.checkAndRunWaitForEvent(BA.java:250)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:190)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:176)
at anywheresoftware.b4a.keywords.Common$14.run(Common.java:1761)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)




Agradecería cualquier tipo de ayuda porque no sé cual puede ser el motivo y ya no sé por donde tirar.

Gracias a tod@s

Un saludo
 

DonManfred

Expert
Licensed User
Longtime User
Upvote 0
Top