elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [Solucionado] Validar Datos de una Tabla (SQL) desde Windows Forms (VB.net)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Validar Datos de una Tabla (SQL) desde Windows Forms (VB.net)  (Leído 14,739 veces)
Ninj4

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[Solucionado] Validar Datos de una Tabla (SQL) desde Windows Forms (VB.net)
« en: 26 Agosto 2010, 15:37 pm »

Buenas a todos, queria consultar como obtener y luevo validar un dato desde una tabla en sql server.
Tengo un formulario con dos textbox (usuario y contraseña) la idea es q al presionar un boton los valores ingresados en los textbox se verifiquen en la tabla del sql, y que dependiendo si estan o no, que aparezca un messagebox "usuario existente" o "usuario inexistente"

Hasta ahora tengo esto, el problema es q no encuentro la manera de validar los datos q pongo en los textbox, si alguien con mas conocimientos me da una mano, se lo agradezco :D

Código
  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.        Dim Usuario As String
  3.  
  4.        Dim con As SqlConnection
  5.        Dim conexion As String = "data source = PABLO-PC; initial catalog= Tabla_Prueba; integrated security=yes"
  6.  
  7.        con = New SqlConnection(conexion)
  8.  
  9.        Dim com As New SqlCommand
  10.        Dim Valor As Object
  11.  
  12.        com.CommandText = String.Format("SELECT * from Usuarios where Usuario = {0} and Contraseña = {1}", TextBox1.Text, TextBox2.Text)
  13.  
  14.        com.CommandType = CommandType.Text
  15.        com.Connection = con
  16.  
  17.        con.Open()
  18.  
  19.        Valor = com.CommandText
  20.  
  21.  
  22.        MessageBox.Show(Valor)
  23.  
  24.  
  25.        If TextBox1.Text = Valor Then
  26.            MessageBox.Show("Bienvenido " & TextBox1.Text)
  27.        ElseIf TextBox1.Text <> Valor Then
  28.            MessageBox.Show("La contraseña o el nombre de usuario no son validos")
  29.        End If
  30.  
  31.        con.Close()
  32.  
  33.    End Sub

Basicamente mi problema es q no encuentro el comando correcto para hacer las comparaciones entre el valor obtenido de la base de datos y el valor ingresado en el textbox, ya probe utilizando executescalar para identificar el valor de forma numerica, pero al tener string.forma para poder asignar valores a la busqueda me da error.

Gracias de antemano   :D


« Última modificación: 26 Agosto 2010, 20:53 pm por [D4N93R] » En línea

Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Validar Datos de una Tabla (SQL) desde Windows Forms (VisualBasic.net)
« Respuesta #1 en: 26 Agosto 2010, 16:28 pm »

Pues una forma que se me ocurre es que hagas un select del usuario y la contraseña, y lo almacences el resultado de la búsqueda en un dataTable. si te devuelve una fila esque el usuario existe, entonces muestras el mensaje en pantalla e inicias el programa.. Algo así: (te lo pongo en c# que es en lo que yo programo pero en vb es igual, poniendo tu nomenclatura)

Código
  1.  
  2. String sentenciaSql = "select login, pass from usuario where login = '" + login + "' AND pass = '" + password + "'";
  3.  
  4.            SqlConnection conexion = null;
  5.            try
  6.            {
  7.                conexion = new SqlConnection(cadena_conexion);
  8.                SqlDataAdapter adapter = new SqlDataAdapter(sentenciaSql, conexion);
  9.  
  10.                DataTable tabla = new DataTable();
  11.                conexion.Open();
  12.                adapter.Fill(tabla);
  13.  
  14.                if (tabla.Rows.Count == 1)
  15.                {
  16.                    exito = true;
  17.                }
  18.                else
  19.                {
  20.                    exito = false;
  21.                }
  22.            }
  23.  
  24. ....

Yo lo tengo así en mi aplicación pero se podrá de más maneras...

Salu2.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Validar Datos de una Tabla (SQL) desde Windows Forms (VisualBasic.net)
« Respuesta #2 en: 26 Agosto 2010, 16:33 pm »

Lo que te han dicho antes, con que la consulta devuelta venga vacía ya alcanza, la comparación la ejecuta el sql al realizar la consulta.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Ninj4

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Validar Datos de una Tabla (SQL) desde Windows Forms (VisualBasic.net)
« Respuesta #3 en: 26 Agosto 2010, 17:15 pm »

Gracias, ahora mismo me pongo a probar a ver que sale!

saludos

Edit: Pongo el codigo en VB.net por si a alguien le puede llegar a servir, muchas gracias por la ayuda :D

Código
  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.  
  3.        Dim con As SqlConnection
  4.        Dim conexion As String = "data source = PABLO-PC; initial catalog= Umbrella; integrated security=yes"
  5.        con = New SqlConnection(conexion)
  6.  
  7.        Dim com As SqlCommand
  8.        Dim buscar As String = "SELECT * from Usuarios where Usuario = '" & TextBox1.Text & "' and Contraseña = '" & TextBox2.Text & "'"
  9.  
  10.        com = New SqlCommand(buscar, con)
  11.  
  12.        Dim Adapter As SqlDataAdapter = New SqlDataAdapter(buscar, con)
  13.        Dim tabla_temp As DataTable = New DataTable
  14.  
  15.        con.Open()
  16.  
  17.        Adapter.Fill(tabla_temp)
  18.        If tabla.Rows.Count = 1 Then
  19.            MessageBox.Show("Bienvenido " & TextBox1.Text)
  20.        ElseIf tabla.Rows.Count = 0 Then
  21.            MessageBox.Show("La contraseña o el nombre de usuario no son validos")
  22.        End If
  23.  
  24.        con.Close()
  25.  
  26.    End Sub

PD: Solo de curioso y para aprender mas, si algiuen sabe otro metodo y tiene ganas de compartirlo, bienvenido sea :P

saludos
« Última modificación: 26 Agosto 2010, 18:27 pm por Ninj4 » En línea

Hartigan


Desconectado Desconectado

Mensajes: 310


Ver Perfil
Re: Validar Datos de una Tabla (SQL) desde Windows Forms (VisualBasic.net)
« Respuesta #4 en: 26 Agosto 2010, 20:47 pm »

me alegro que te sirviera.  ;-)
En línea

ElCampesino

Desconectado Desconectado

Mensajes: 23



Ver Perfil
Re: [Solucionado] Validar Datos de una Tabla (SQL) desde Windows Forms (VB.net)
« Respuesta #5 en: 16 Agosto 2013, 22:31 pm »

Buen día, quiza ya sea un poco tarde pero este mismo ejemplo me sirvio para poder terminar la validación en mi proyecto por eso me anime a postear la conexión y la validación de usuario echa en un Proyeto en 3 capas y una mas de Entidad, mi proyecto utiliza "Procedimientos Almacenados" para validar el usuario y la contraseña, reciben 2 parametros y regresa 1
la verción que estoy utilizando es 2010 y el servidor SQL 2008

Antes que nada quiero Aclarar que soy un novato y me estoy enseñando a programar, espero no romper las reglas del foro ya que es la primera vez que posteo algo y no estoy familiarizado con esto al 100% quiza mis terminos no sean los mas correctos asi que acepto criticas constructivas
bien. Empecemos!

Primero creamos nuestros procedimientos almacenados

Código
  1. CREATE proc validarSuper
  2. @USER VARCHAR(50),
  3. @pass VARCHAR(50),
  4. @Respuesta INT output
  5. AS
  6. DECLARE @usuario VARCHAR(50)
  7. DECLARE @passw VARCHAR(50)
  8. BEGIN
  9.  
  10. SELECT @usuario=strNombreSuper, @passw=strPasword
  11. FROM TabConfiguracion
  12. WHERE strNombreSuper = @USER AND @pass = strPasword
  13.  
  14. IF ((@USER = @usuario) AND (@pass = @passw))
  15. BEGIN
  16. SET @Respuesta = 1
  17. END
  18. ELSE
  19. BEGIN
  20. print 'El usuario ó contraseña es Incorrecto'
  21. SET @Respuesta = 0
  22. END
  23. RETURN @Respuesta
  24. END
  25.  
  26.  
  27. CREATE proc validarUsuario
  28. @USER VARCHAR(50),
  29. @pass VARCHAR(50),
  30. @Respuesta INT output
  31. AS
  32. DECLARE @usuario VARCHAR(50)
  33. DECLARE @passw VARCHAR(50)
  34.  
  35. BEGIN
  36. SELECT @usuario=shtUsuNombreUsuario, @passw=shtUsuPasword
  37. FROM CatUsuarios
  38. WHERE shtUsuNombreUsuario = @USER AND shtUsuPasword = @pass
  39.  
  40. IF ((@USER = @usuario) AND (@pass = @passw))
  41. BEGIN
  42. print 'El Usuario es correcto'
  43. SET @Respuesta = 1
  44. END
  45. ELSE
  46. BEGIN
  47. print 'El usuario ó contraseña es Incorrecto'
  48. SET @Respuesta = 0
  49. END
  50. RETURN @Respuesta
  51. END
  52.  

Una vez creados llenamos algunos registros para hacer las pruebas de ejecucion
Código
  1. DECLARE @resultado INT
  2. EXEC validarSuper 'SuperDuper','Contraseña',@resultado output
  3. print @resultado
  4.  

Bien esto solo es un tip en caso de que no sepas como ejecutar un procedimiento despues de crearlo en SQL, pasemos al codigo de Visual Basic

Esta es la clase de LoginForm1 dentro de la capa grafica e importa las capas de Negocio y Entidad
Código
  1. Imports Entidad
  2. Imports Negocio
  3.  
  4. Public Class LoginForm1
  5.  
  6.    Public Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
  7.  
  8.        Dim _login As New entidadLogin 'creo una instancia de la clase entidadLogin dentro de la capa Entidad
  9.  
  10. 'Le paso los valores de usuario y contraseña
  11.        _login.usuario = UsernameTextBox.Text
  12.        _login.pasword = PasswordTextBox.Text
  13.  
  14.        Dim validar As New valUsuario 'Creo una instancia de la clase valUsuario, dentro de la capa Negocio
  15.  
  16. 'Aqui uso el metodo "validarUser" y le paso el objeto que lleva los parametros se usuario y contraseña
  17.        If validar.validarUser(_login) Then
  18. 'Si es verdadero muestra el usuario
  19.            MsgBox(_login.usuario)
  20.        Else
  21.            MsgBox("Estas Chiflado Tio")
  22.        End If
  23.  
  24.        Me.Close()
  25.    End Sub
  26.  
  27. ' Este es el boton de cerrar
  28.    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
  29.        Me.Close()
  30.    End Sub
  31.  
  32. End Class
  33.  

Esta es la clase de entidadLogin, me sirve espesificamente para pasar valores de una clase a otra

Código
  1. Public Class entidadLogin
  2.  
  3. ' Esta clase solo la utilizo para pasar los valores entre las 3 Capas
  4. 'Todas la Clases tienen esta referencia ó estan referenciadas a esta clase no se como llamarle
  5.    Dim user, pass As String
  6.  
  7.    Public Property usuario
  8.        Get
  9.            Return user
  10.        End Get
  11.        Set(value)
  12.            user = value
  13.        End Set
  14.    End Property
  15.  
  16.    Public Property pasword
  17.        Get
  18.            Return pass
  19.        End Get
  20.        Set(value)
  21.            pass = value
  22.        End Set
  23.    End Property
  24.  
  25.    Sub New()
  26.        ' TODO: Complete member initialization
  27.    End Sub
  28.  
  29. 'Constructor
  30.    Public Sub New(ByVal usuario As String, pass As String)
  31.        user = usuario
  32.        pasword = pass
  33.    End Sub
  34.  
  35. End Class
  36.  

Esta clase es valUsuario de la capa de Negocio e importa la capa de Datos

Código
  1. Imports Datos
  2.  
  3. 'Esta clase esta dentro de la capa de Negocio y tiene el metodo "validarUser" que recibe un objeto de tipo Entidad.entidadLogin de la capa Entidad
  4.  
  5. Public Class valUsuario
  6.    Dim _acceso As New Acceso'Creo una instancia de la clase Acceso, dentro de la Capa Datos
  7.  
  8.    Public Function validarUser(login As Entidad.entidadLogin)
  9.        If login.usuario.ToString = "SuperDuper" Then 'Si el usuario es "SuperDuper" Entonces
  10.            If _acceso.superAcceso(login) Then 'Ejecuta el metodo "superAcceso" de la clase Acceso para validar el usuario
  11.                MsgBox(login.usuario)
  12.  
  13.                ' Esto esta pendiente No lo tomes en cuenta
  14.            Else 'Si la contraseña no es correcta entonces
  15.                MsgBox("Contraseña incorrecta")
  16.            End If
  17.  
  18.        Else 'Si el usuario no es "SuperDuper" entonces es un usuario común
  19.            MsgBox("El usuario es un mortal")
  20. 'Uso otro metodo de la clase Acdeso para validar a los usuarios mortales
  21.            If _acceso.accesoUsuario(login) Then' Si el usuario es verdadero Entonces..
  22.                MsgBox("Correcto")
  23.                Return True
  24.            Else'Si no es verdadero Entonces..
  25.                MsgBox("Incorrecto")
  26.                Return False
  27.            End If
  28.        End If
  29.  
  30.        Return login
  31.    End Function
  32.  
  33. End Class
  34.  

Esta otra es la Clase de Acceso dentro de la Capa de Datos

Código
  1. Imports System.Data.SqlClient
  2. 'Clase Acceso. Contiene 2 metodos, 1 es para validar al SuperUsuario y el otro es pra validar a los mortales
  3. Public Class Acceso
  4.  
  5.    Dim cnn As New Conexion 'Esta es la clase de conexión dentro de la capa de Datos
  6.    Dim cmd As New SqlClient.SqlCommand'Este objeto me sirve para enviar la consulta a la base de datos
  7.    Dim Resultado As Integer 'Valor de resultado en consulta
  8.  
  9.  
  10.    Public Function superAcceso(_login As Entidad.entidadLogin)
  11.  
  12.        Try
  13.            cmd.Connection = cnn.conectar 'Me conecto y le asigno la conexión al objeto cmd
  14.            cmd.CommandText = "ValidarSuper" ' Este es el nombre del Procedimiento almacenado
  15.            cmd.CommandType = System.Data.CommandType.StoredProcedure 'Le indico que el comando es un Prodecimiento almacenado
  16.  
  17.            cmd.Parameters.AddWithValue("@user", _login.usuario.ToString)'le paso el valor de usuario del procedimiento almacenado
  18.            cmd.Parameters.AddWithValue("@pass", _login.pasword.ToString)'le paso el valor de pasword del procedimiento almacenado
  19.  
  20.            cmd.Parameters.Add(New SqlParameter("@Respuesta", SqlDbType.Int))'le digo cual sera el parametro de regreso
  21.            cmd.Parameters("@Respuesta").Direction = ParameterDirection.Output'le asigno la direccion del parametro
  22.            cmd.ExecuteNonQuery()'Ejecuto el procedimiento
  23.  
  24.            Resultado = cmd.Parameters("@Respuesta").Value.ToString'Recibo el Resultado
  25.  
  26.            If Resultado = 1 Then
  27.                Return True
  28.  
  29.            Else
  30.                Return False
  31.  
  32.            End If
  33.  
  34.        Catch ex As Exception
  35.            MsgBox(ex)
  36.        End Try
  37.  
  38.        Return True
  39.  
  40.    End Function
  41.  
  42.  
  43.    Public Function accesoUsuario(_login As Entidad.entidadLogin)
  44.  
  45.        Try
  46.            cmd.Connection = cnn.conectar
  47.            cmd.CommandText = "validarUsuario"
  48.            cmd.CommandType = System.Data.CommandType.StoredProcedure
  49.  
  50.            cmd.Parameters.AddWithValue("@user", _login.usuario.ToString)
  51.            cmd.Parameters.AddWithValue("@pass", _login.pasword.ToString)
  52.  
  53.            cmd.Parameters.Add(New SqlParameter("@Respuesta", SqlDbType.Int))
  54.            cmd.Parameters("@Respuesta").Direction = ParameterDirection.Output
  55.            cmd.ExecuteNonQuery()
  56.  
  57.            Resultado = cmd.Parameters("@Respuesta").Value.ToString
  58.  
  59.            If Resultado = 1 Then
  60.                Return True
  61.  
  62.            Else
  63.                Return False
  64.  
  65.            End If
  66.  
  67.        Catch ex As Exception
  68.            MsgBox(ex)
  69.        End Try
  70.  
  71.        Return True
  72.  
  73.    End Function
  74.  
  75. End Class
  76.  

Y esta ultima clase es la de conexión que tambien se encuentra dentro de la capa de Datos

Código
  1. Imports System.Data.SqlClient
  2. 'Esta es la Clase conexión
  3. Public Class Conexion
  4.  
  5.    Dim cnn As SqlConnection
  6.  
  7.    Public Function conectar()
  8.        Dim Servidor As String = "ZARAK-PC\SQLEXPRESS"
  9.        Dim BaseDatos As String = "BDTiempo"
  10.        Dim CadenaConexion As String = "Data Source =" & Servidor & ";Initial Catalog=" & BaseDatos & ";Integrated Security=SSPI;"
  11.  
  12.        Try
  13.            cnn = New SqlConnection(CadenaConexion)
  14.            cnn.Open()
  15.            Return cnn
  16.        Catch ex As Exception
  17.            MsgBox(ex.Message)
  18.            Return False
  19.        End Try
  20.    End Function
  21.  
  22.    Public Function desconectar()
  23.        Try
  24.            If cnn.State = ConnectionState.Open Then
  25.                cnn.Close()
  26.                Return True
  27.            Else
  28.                Return False
  29.            End If
  30.        Catch ex As Exception
  31.  
  32.            MsgBox(ex.Message)
  33.            Return False
  34.        End Try
  35.    End Function
  36. End Class
  37.  

Espero sea claro y le pueda servir a alguien

************
Tansolo soy un humilde campesino que ha caido en desgracia y quiere compartir algo


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines