¿Por qué se produce un error en este codigo?

Hola experto, la función para consultar el usuario que ingresa al programa esta casi completa pero tiene un error que no tengo idea que sera.
La función quedo así:
Private Function ValidarUsuario()
Dim us_existe As Integer
consulta = "SELECT COUNT(Codigo)AND COUNT(Clave)AS EXISTE FROM USUARIOS WHERE Codigo=" & txtCodigo.Text & " AND Clave =" & txtContraseña.Text & ""
cnn = New MySqlConnection(ConexionBaseDatos)
cnn.Open()
mc = New MySqlCommand(consulta, cnn)
mdr = mc.ExecuteReader()
While (mdr.Read())
If (mdr.IsDBNull(0) <> True) Then
us_existe = mdr("EXISTE")
ElseIf (mdr.IsDBNull(0) = True) Then
us_existe = 0
End If
End While
mdr.Close()
cnn.Close()
Return us_existe
End Function
El evento click del boton es asi:
Private Sub lblIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblIniciar.Click
ConexionBaseDatos = "Database=Simulador;Data Source=localhost;User Id=root;Password=root"
If txtCodigo.Text = "" Or txtContraseña.Text = "" Then
MessageBox.Show("Por favor escriba su Nombre de Usuario y contraseña")
Else
If (ValidarUsuario() = 1) Then
Me.Hide()
f2 = New frmPrincipal
f2.Show()
ElseIf (ValidarUsuario() = 0) Then
MessageBox.Show("Compruebe que el usuario o clave sean correctos")
End If
End If
End Sub
El error que genera se produce cuando en la parte de clave se digitan en vez de números, letras, dice algo así: Unknow column 'lo que puse en el campo de texto' in a where clause.
Sin embargo si coloco números, así sean erróneos me arroja los msgbox adecuados.
No tengo idea que sera, ya probé la consulta en Mysql, y se ejecuta perfectamente, pero en el visual es que genera el problema.
Si tienes alguna idea te estaría muy agradecido, para así poder concluir esta parte.

1 respuesta

Respuesta
1
El problema lo tienes en la consulta si el campo código es alfanumérico tienes que ponerlo entre ', cuando es numérico no hace falta.
Ej:
- Si son alfanuméricos los dos:
consulta = "SELECT COUNT(Codigo) AS EXISTE FROM USUARIOS WHERE Codigo='" & txtCodigo.Text & "' AND Clave ='" & txtContraseña.Text & "'"
- Si fuera numerico el primero y alfanumerico el segundo:
consulta = "SELECT COUNT(Codigo) AS EXISTE FROM USUARIOS WHERE Codigo=" & txtCodigo.Text & " AND Clave ='" & txtContraseña.Text & "'"
Uy, perdona mi tremenda ignorancia pero no entendí bien, en realidad yo veo los ejemplos iguales.
Mi caso es el segundo, el primero es numérico y el segundo o sea la clave, alfanumérico.
Perdón por las molestias.
Gracias!
Solo tienes que recordar que cuando el campo lleva texto tiene que ir entre comillas simples y el numérico no hace falta.
No te preocupes, que para esos estamos. No te olvides de finalizar la pregunta.
Please finaliza la pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas