Ayuda con Visual .NET (Login)

#1
Buen día a todos, espero que esten bien...

Mi problema es el siguiente (no es nada del otro mundo, pero no recuerdo como hacerlo):

Tengo una BD en SQL Server 2005 y estoy realizando un proyecto en Visual Studio 2008 .NET, he creado una pantalla de login que consta de lo siguiente:

1 ComboBox (El cual esta cargado con datos de la BD)
1 TextBox (El cual debe introducirse el password)
1 Button (Para iniciar la sesión)

Lo que quiero es que cuando el usuario seleccione alguna opcion del combobox e introduzca la contraseña, esta informacion se valide contra la informacion en la BD...

Como puedo hacer esto???

Estoy programando en Visual Basic .NET.


Desde ya, muchas gracias...


 
#2
creas una conexion a la base de datos en el cuadro de herramientas en la pestaña datos escoge la opcion que mas te acomode y sigues los pasos

despues crea el codigo abriendo tu conexxion previamente con tuconexion.open despues realizas esta consulta es un ejemplo

"SELECT nombre_columna FROM tabla_elegida WHERE nombre_columna = usuario_introducido AND password_columna = password_introducido"

y le pones un if si quieres que pase a otra forma si el resultaodo es corecto si es uincorrecto puedes mandar un mensaje de error
 

JamnLycan

Bovino maduro
#3
Lo que suelo hacer al trabajar con BDD es abrir la conexión, tomo los datos, los hago objetos cierro la conexión y trabajo con objetos, así que aparte de eso el aporte anterior es muy acertado...
 
#4
si estas agarrando la como valuemember de cada registro del combo puedes usar este codigo:

Try
Dim con As New OleDbConnection(conexion)
Dim sql As String = "SELECT * FROM usuarios WHERE clave ='" & Me.cbousuario.SelectedValue & "'"
Dim dsusuarios As New DataSet()
Dim drusuarios As SqlDataReader
Dim cmd As SqlCommand
cmd =
New SqlCommand(sql, con)
con.Open()
drusuarios = cmd.ExecuteReader
If drusuarios.Read() Then
Dim contrasea As String = drusuarios.Item("contrasea").ToString
If Me.txtcontrasea.Text.Trim = contrasea Then
Dim x As New menu
Dim nombre As String = Me.cbousuario.Text.Trim
actualizar.cajero(nombre, conexion)
Me.Hide()
x.Show()
Else
MessageBox.Show("Contrasea incorrecta intentelo de nuevo", "ACCESO", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.txtcontrasea.Text = ""
Me.txtcontrasea.Focus()
End If
End If
drusuarios.Close()
con.Close()
cmd.Dispose()
con.Dispose()
Catch err As SqlException
MessageBox.Show(err.Message)
Catch err As Exception
Throw err
MessageBox.Show(err.Message)
End Try

Que en si lo que hace es que extrae la contraseña del registro que escogiste en la tabla(que me supongo que es un usuario) y despues lo compara con el valor del textbox
 
#5
la variable con es de tipo SqlConnection lo que pasa es que yo lo utilice para una base de datos hecha en Acces y lo estaba cambiando pero es de forma similar en SQL
 
#6
Gracias..!

Antetodo les reitero mi agradecimiento a todos los que me respondieron, todas sus respuestas fueron muy útiles.

Utilice el código enviado por anaya666 e hice algunos cambios...

Try
Dim con As New SqlConnection("SERVER=PANAMA031\SQLEXPRESS; DATABASE=COTIZADOR_WWMA")
Dim sql As String = "SELECT * FROM CORREDORES WHERE nombre_usuario ='" & Me.cbUser.Text & "'"
Dim dsusuarios As New DataSet()
Dim drusuarios As SqlDataReader
Dim cmd As SqlCommand
cmd =
New SqlCommand(sql, con)
con.Open()
drusuarios = cmd.ExecuteReader
If drusuarios.Read() Then
Dim contrasea As String = drusuarios.Item("pass").ToString
If Me.txtPass.Text.Trim = contrasea Then
'Dim x As Menu
Dim nombre As String = Me.cbUser.Text.Trim
'actualizar.cajero(nombre, con)
Me.Hide()
Info_General.Show()
Else
MessageBox.Show("Contrasea incorrecta intentelo de nuevo", "ACCESO", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.txtPass.Text = ""
Me.txtPass.Focus()
End If
End If
drusuarios.Close()
con.Close()
cmd.Dispose()
con.Dispose()
Catch err As SqlException
MessageBox.Show(err.Message)
Catch err As Exception
Throw err
MessageBox.Show(err.Message)
End Try

Sin embargo mes sale el siguiente mensaje de error:

"Error mientras se establecia la conexion con el servidor. Al conectar con SQL Server 2005, el error se puede producir porque la configuracion predeterminada de SQL Server no admite conexiones remotas. (provider: Interfaces de red SQL, error: 26 - Error al buscar el servidor o instancia especificado)"

Ya anterirormente me habia salido con otro codigo y busque en la web como configurar esto. Lo hice sin embargo sigue saliendo...

Les ha pasado esto?
 
#7
por defecto el SQL2005 no tiene activas las conexiones remotas, te vas a Inicio->Todos Los Programas->Microsoft SQL 2005->Configuration Tools->SQL Server Surface Area Configuration.
Le das click al primer link que aparece enla ventana, se llama Surface Configuration Area For Services and Connections.
seleccionas el servidor que estas utilizando y entras a Database Engine y despues a Remote Connections, ahi activas la segunda opcion y configuras el tipo de conexion remota
 
#8
Hola,

Estás trabajando con Windows Forms, ASP.NET o Presentation Foundation?. Por lo menos para ASP.NET ya existe un control de login que te puede dar una estructura mucho más ordenada y estándar para trabajar con un inicio de sesión.

El código que presentan los compañeros en el post es un ejemplo útil, pero muy alejado de las mejores prácticas. Hacer un select tantas veces no es algo recomendable (por ejemplo, porque no tener un dataview listo para explotarse con los usuarios?). No está controlando aspectos como ataques de fuerza bruta (que pasa si intento adivinar la contraseña y tengo intentos infinitos).

En fin, son sólo algunas observaciones.

Saludos
 
#9
No ando muy pulido en .NET, pero le hice una pequeña modificación al código (puede que necesiten ajustarlo, pero basicamente es ciclo while que si el usuario mete mal la contraseña se le suma 1 a un contador (que lleva un conteo de intentos fallidos) y cuando llega a 5 le cierra la conexión y el programa).

Try
Dim con AsNew SqlConnection("SERVER=PANAMA031\SQLEXPRESS; DATABASE=COTIZADOR_WWMA")
Dim sql AsString = "SELECT * FROM CORREDORES WHERE nombre_usuario ='" & Me.cbUser.Text & "'"
Dim dsusuarios AsNew DataSet()
Dim drusuarios As SqlDataReader
Dim cmd As SqlCommand
cmd = New SqlCommand(sql, con)
con.Open()
drusuarios = cmd.ExecuteReader
If drusuarios.Read() Then
Dim contrasea AsString = drusuarios.Item("pass").ToString
while(c<5)
IfMe.txtPass.Text.Trim = contrasea Then
'Dim x As Menu
Dim nombre AsString = Me.cbUser.Text.Trim
'actualizar.cajero(nombre, con)
Me.Hide()
Info_General.Show()
break:
Else
MessageBox.Show("Contrasea incorrecta intentelo de nuevo", "ACCESO", MessageBoxButtons.OK, MessageBoxIcon.Information)
c+=1;
Me.txtPass.Text = ""
Me.txtPass.Focus()
EndIf
Endwhile
EndIf
drusuarios.Close()
con.Close()
cmd.Dispose()
con.Dispose()
Catch err As SqlException
MessageBox.Show(err.Message)
Catch err As Exception
Throw err
MessageBox.Show(err.Message)
EndTry
 
Arriba