Spanish Llamada a Procedimiento almacenado

jgimenez

Member
Saludos!
Estoy intentando cargar un spinner desde un procedimiento almacenado en SQL Server, pero no lo consigo
Estoy usando este código para llamar al procedimiento, pero obtengo error
Proce:
Sub Carga_Choferes_Procedimiento_Almaceando
    Try
        Dim ci_chofer As Long
        Dim nombre_chofer As String
        Dim cs As Object = mysql.CreateCallStatement("{call Listar_Choferes()}", Array( nombre_chofer,ci_chofer))
        Dim rs As JdbcResultSet = mysql.ExecCall(cs)
        Log( rs)

    Catch
        MsgboxAsync("Se produjo el error : "& LastException.Message,"Error.Chofer_Procedimiento")
    End Try
        
End Sub

Mi procedimiento no tiene parámetros de entrada, solamente lista dos columnas de una tabla.
Qué estoy haciendo mal?
Como podría cargarel resultado del procedimiento en un spinner?
Muchas gracias por la ayuda!!
 

jgimenez

Member
Hola:

¿Qué te devuelve Log( rs)?
¿Devuelve algo el MsgboxAsync?


¿Qué error obtienes?

Nos das poca información para ayudarte.

saludos
Hola, gracias por responder!
El error que obtengo es:
java.slq.SQLException: Invalid parameter index 1

Mi procedimiento almacenado no tiene parámetros de entrada, devuelve el nombre y la identificación (en este caso de choferes).
En esta línea
Linea:
  Dim cs As Object = mysql.CreateCallStatement("{call Listar_Choferes()}", Array( nombre_chofer,ci_chofer))

Intento recibir en un Array , no se si ahí está mi error.
Gracias!
 

drgottjr

Expert
Licensed User
Longtime User
a veces hay que sacar esa muela con unos alicates
mas grandes. vamos, aguilar, sujeta al paciente mientras
intento yo sacarsela.

prueba Listar_Choferes SIN parentesis
o, mejor, muestra el codigo del procedimiento
dices que no hay parametros, pero mysql no
esta de acuerdo y arroja un error. alguien se
equivoca.
 

jgimenez

Member
Saludos, ya lo he conseguido, la llamada al procedimiento almacenado quedó así:
B4X:
    Try
        Dim cs As Object = mysql.CreateCallStatement("exec Listar_Choferes",Null)
        Dim rs As JdbcResultSet = mysql.ExecCall(cs)
        Log( rs)
        Do While rs.NextRow
            combo_chofer.Add(rs.GetString("NombreAp")) 'Llenamos el Spinner
        Loop
    Catch
        MsgboxAsync("Se produjo el error : "& LastException.Message,"Error.Chofer_Procedimiento")
    End Try

Sin embargo, al ejecutar me daba este error: android.os.NetworkOnMainThreadException
Que lo solucioné llamando esta rutina en Activity_Create

B4X:
Sub DisableStrictMode
    Dim jo As JavaObject
    jo.InitializeStatic("android.os.Build.VERSION")
    If jo.GetField("SDK_INT") > 9 Then
        Dim policy As JavaObject
        policy = policy.InitializeNewInstance("android.os.StrictMode.ThreadPolicy.Builder", Null)
        policy = policy.RunMethodJO("permitAll", Null).RunMethodJO("build", Null)
        Dim sm As JavaObject
        sm.InitializeStatic("android.os.StrictMode").RunMethod("setThreadPolicy", Array(policy))
    End If
End Sub

Seguiré probando procedimientos almacenados con parámetros de entrada y salida, pero por lo pronto ya tengo como cargar en un combo
Gracias!
 
Top