Lo que debes de hacer es utilizar un DataReader y en lugar de utilizar ExecuteNonQuery debes de utilizar ExecuteReader, quedaria algo asi
Código C#:
Ver originalPublic 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)
Dim DataReader As MySqlDataReader
'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
DataReader = Comando.ExecuteReader()
If DataReader.HasRows Then
DataReader.Read()
Return DataReager.GetInt32(0).ToString()
End If
'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
Puedes poner el Read dentro de un while para sacar varios valores de la DB.
Saludos