Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: syaoran en 13 Julio 2007, 19:03 pm



Título: datos ed una consulta - Uso de DataReader
Publicado por: syaoran en 13 Julio 2007, 19:03 pm
Hola que tal? estoy tratando de hacer un login form usando VB.Net y MySQL corriendo en una maquina dentro de la LAN en linux, pedo realizar la conexion sin ningun problema e incluso puedo hacer als consultas, pero tengo dos problemas que no se como atacar.

1.- La primera es que necesito que la consulta que hace a la base de datos sobre si el usuairo existe o no, como puedo hacer para determinar un valor logico de una consulta realizada??? osea, cuando se ejecuta el SELECT * FROM usuario WHERE nombre = ''''''''userid'''''''' and pass = ''''''''passid'''''''' ; como hago para saber si realmente lo encontro??? Yo tengo dos ideas , una, vaciar el contenido de la consulta a dos variables, o bien buscar como asignar un operador logico que me sirva como un flag, el asunto es que no he logrado realizar ninguno de los dos, ya que apenas estoy empezando en esto de las programacion en VB. Les dejo mi codigo para que vean como lo estoy usando, gracias por sus comentarios y sugerencias.

Código:
Option Explicit On
Option Strict On
Option Compare Text

Imports MySql
Imports MySql.Data.MySqlClient
Imports System



Public Class LoginForm1


    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Dim userid As String
        Dim passid As String

        userid = user_txt.Text
        passid = passwd_txt.Text

        Dim conector As String
        conector = " database=rocar;data source=192.168.1.200;user id=rocar_taller;password =123456"

        Dim conest As New MySqlConnection(conector)

        Dim consulta As String = "SELECT * FROM usuario WHERE nombre=''''''''" & userid & "'''''''' and pass = ''''''''" & passid & "''''''''"

        Dim query As New MySqlCommand(consulta)
        query.Connection = conest
        conest.Open()
        Try
            query.ExecuteNonQuery()
            MsgBox("Consulta realizada con Exito")

        Catch ex As MySqlException

            MsgBox(ex.Message.ToString)

        End Try

        query.Connection.Close()

    End Sub

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
        Me.Close()
    End Sub

End Class

Acabo de hacer unas modificaciones, porque leyendo la documentacion del conector viene algo sobre un datareader y pue sya lo hice y si jala bien y todo, me extrae info de la consulta pero!!! el valor que me devuelve en la variable que le asigno el datareader.getstring me manda solament el segundo registro del resultado de la consulta, osea, el password y no le usuario que es lo que yo quiero, alguna sugerencia???
 aqui dejo el codigo:
Código:
Public Class LoginForm1
    Dim usuario As String


    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Dim userid As String
        Dim passid As String

        userid = user_txt.Text
        passid = passwd_txt.Text

        Dim conector As String
        conector = " database=rocar;data source=192.168.1.200;user id=rocar_taller;password =123456"

        Dim conest As New MySqlConnection(conector)

        Dim consulta As String = "SELECT * FROM usuario WHERE nombre=''''''''" & userid & "'''''''' AND pass = ''''''''" & passid & "''''''''"

        Dim exec As New MySqlCommand(consulta, conest)
        conest.Open()
        Dim lector As MySqlDataReader

        If user_txt.Text = "" And passwd_txt.Text = "" Then
            MsgBox("Debes introducir tus datos")
            Application.Restart()

        Else


            Try

                lector = exec.ExecuteReader()

                While lector.Read()

                    usuario = lector.GetString(1)

                End While

                MsgBox("bienvenido: " & usuario)

                lector.Close()

            Catch ex As MySqlException

                MsgBox(ex.Message.ToString)

            End Try

            conest.Close()

        End If


    End Sub

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
        Me.Close()
    End Sub



End Class


Por cierto, igual ya intente modificando la consulta y seleccionando unicamente el campo nombre en lugar del * pero el VB me marca un error cuando hago eso -_-