Código vb.net:
Ver originalPublic Function VerificarUsuario(ByVal oNombre As String) As Boolean
Dim Consulta As String = "SELECT (COUNT(*)>0) existe FROM usuarios WHERE nombre = '" & oNombre & "';"
Dim oCom As New MySqlCommand(Consulta, Conexion)
' Conexion.Open() <-- esto es basura.
Return Convert.ToBoolean(oCom.ExecuteScalar())
End Function
Es basura porque la conexión ya existe y está abierta. Si así no fuese, te daría un error porque la instancia no existiría.
Recuerda lo que menciono en el Post:
La conexión ya debe existir y estar abierta antes de crear el MysqlCommand Cita: Ahora quiero tener un lugar donde colocar todas las funciones y llamarlas, he creado una nueva clase y ahí he pegado la funcion pero me aparece un error, la clase la llame Funciones.vb pero el error debe ser porque no se como llamar correctamente la función, se que me van a regañar pero aqui pego como lo hago.
Consejos generales:
- Toda aplicación vb.net cuenta con un Module que contiene todas las variables y objetos públicos de la aplicación. Te conviene colocar allí la creación de una instancia de la clase qe maneje la Base de Datos y manejar todo con ese objeto. También se pueden colocar allí funciones y métodos globales, para que se puedan llamar desde cualquier parte. Pero no es conveniente poner todo allí.
Ejemplo:
Código vb.net:
Ver originalImports System.Net
Imports System.IO
Imports System.Globalization
Imports System.Text.RegularExpressions
Module Module1
Friend oBase As BaseDeDatos
Friend oSesion As Sesion
Friend oUser As Usuario
Friend Function ValidarIp(ByVal sIp As String) As Boolean
Try
Dim address As IPAddress = IPAddress.Parse(sIp)
Return True
Catch e As ArgumentNullException
Return False
Catch e As FormatException
Return False
Catch e As Exception
Return False
End Try
End Function
End Module
En este ejemplo BaseDeDatos, Sesion y Usuario son clases creadas. Las variables son el medio para acceder a sus métodos de instancia.
- No puedes invocar un método dirigiéndote a la clase, a menos que el método sea un método de clase y no de instancia.
- No se debe intentar cerrar una conexión a menos que realmente la vayas a dejar de usar. El overhead de generación de la conexión es más elevado que la ejecución de muchas consultas.
- No puedes mandar a ejecutar un método o función sin asegurarte que genere errores. Usa Try/Catch para controlar los errores.
- No mandes a abrir o cerrar una conexión sin asegurarte primero que la misma exista o esté realmente abierta o cerrada. Es preferible realizar una verificación previa:
Ver Link:
http://www.forosdelweb.com/f29/ayuda...5/#post3449607
- No hagas públicas todas las variables de una clase. Es preferible crearle propiedades públicas y métodos públicos para manipular su contenido y acciones. Sino, estas violando el paradigma y haciendo muy vulnerables las clases.