Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2010, 11:02
udarko
 
Fecha de Ingreso: junio-2010
Mensajes: 14
Antigüedad: 14 años, 8 meses
Puntos: 0
Cadena SQL con variables en VB.NET

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!