Tengo la necesidad de solicitar un valor de retorno de una consulta hecha a una base de datos en mysql...
la consulta es la siguiente:
Esta consulta esta correcta por que en el administrador de mysql retorna el valor que se desea, que debe ser 126
tengo una funcion que creo deberia funcionar para obtener ese valor en un string y usarlo en mi codigo... la funcion es la siguiente...
Previamente se han importado las MySql.Data.MySqlClient
Código vb:
Ver original'declaramos la cadena de conexión
Dim ConStr As String = "server=localhost;User Id=root;password=0231;database=sislacoh;Persist Security Info=True"
'instanciamos un objeto conexion
'y le pasamos de parametro la variable con la cadena
Dim Con As New MySqlConnection(ConStr)
'creamos la funcion para insertar, Update o delete que devuelve
' un valor tipo string (cadena de texto)
'con un parametro que contendrá la cadena de conexión
Public Function MiFuncion(ByVal query As String) As String
'creamos el objeto comando y le pasamos el parámetro que contiene la query y la conexion
Dim Comando As New MySqlCommand(query, Con)
'Try para capturar los errores
Try
'antes de abrir conexión nos aseguramos que no exista conexión establecida previa
If Not Con Is Nothing Then Con.Close()
'abrimos conexión
Con.Open()
'declaramos la variable de tipo entero que contendrá las filas afectadas y ejecutamos
'el comando
Dim res As Integer = Comando.ExecuteNonQuery()
'mandamos como retorno en múmero de filas afectadas
'pero utilizamos Tostring para pasar el valor de número entero a cadena de texto
'porque hay que recordar que la función devuelve un valor de tipo string
Return res.ToString
'capturamos a partir de aquí si hay errores
Catch ex As Exception
'y si hay errores retornamos el mensaje de error
Return MsgBox(ex.Message, MsgBoxStyle.Critical)
'y con Finally que es parte de TRY CATCH y END TRY
'ponemos el código que se ejecutará se produzca o no un error
Finally
'cerramos la conexión
Con.Close()
'y esto es muy importante, el objeto comando que habiamos creado
'lo eliminamos de la memoria
Comando = Nothing
'finalizamos la captura de errores
End Try
End Function
Esta funcion la he usado para ejecutar unos insert o updates y me ha funciona correctamente, lo que indica que si se comunica con la base de datos...
y en este caso la impmente asi
Código vb:
Ver originalDim valor As String = MiFuncion("SELECT count(*) FROM sesion")
En este caso el resultado que siempre me devuelve es "-1", y no "126" no logro entender... alguna orientacion. o alguna otra forma de hacer esto...
PD.
Uso Vb.net 2008, mysql server 5.1 y Mysql Connector net 6.3.5