Hola, miren tengo un problema increiblemente básico que me ha estado molestado durante varios días, la verdad hace mucho que deje de utilizar el vb y ahora que lo necesito para un proyecto no puedo pasar de este error de novato, pero bueno el problema es este:
Trato de hacer una simple validacion de login conectandome al sql server, hasta aqui todo bien, el problema surge en la cadena SQL.
Código:
Imports System.Data.SqlClient
Imports System.Text
Public Class bienvenido
Private Sub entrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles entrar.Click
Dim usuarioTmp As String = FixString(Trim(Me.usuario.Text), "'", "''")
Dim passwordTmp As String = FixString(Trim(Me.pass.Text), "'", "''")
Dim cnString As String = My.Settings.CGADSConnectionString
If usuarioTmp <> "" And passwordTmp <> "" Then
Dim connection As New SqlConnection(cnString)
Try
connection.Open()
Dim cadena_comando As String = "SELECT pass FROM usuarios WHERE usuario='" & usuarioTmp & "' AND pass='" & passwordTmp & "'"
Dim command As SqlCommand = New SqlCommand(cadena_comando, connection)
Dim myPassword As String = Trim(command.ExecuteScalar.ToString)
If StrComp(myPassword, passwordTmp, CompareMethod.Binary) = 0 Then
connection.Close()
Me.DialogResult = Windows.Forms.DialogResult.OK
If Not Me.Modal Then Me.Close()
Else
MsgBox("Ha ocurrido un error al momento de iniciar sesión.Intentelo mas tarde.")
End If
Catch ex As Exception
MsgBox("Error " & Err.Number & " :" & ex.Message)
Finally
If connection IsNot Nothing AndAlso connection.State <> ConnectionState.Closed Then
connection.Close()
End If
End Try
End If
End Sub
Private Function FixString(ByVal SourceString As String, ByVal StringToReplace As String, ByVal StringReplacement As String) As String
SourceString = SourceString.Replace(StringToReplace, StringReplacement)
Return SourceString
End Function
End Class
Ese es mi codigo (no mio en realidad, lo tenia guardado, creo que lo obtuve de internet). El problema se presenta en la cadena SQL, el error que me muestra es
"referencia a objeto no establecida en instancia de un objeto",
esto lo se porque si pusiera "SELECT pass FROM usuarios" funciona bien, de igual manera si le pusiera directamente "SELECT pass FROM usuarios WHERE usuario='myuser' AND pass='mypass' ".
He intentado directamente con el valor Me.usuario.Text en la cadena SQL pero no funciona.
Gracias por su ayuda!