none
Validar um usuário no banco porem o sistema apresenta erro na seguinte linha do código. RRS feed

  • Pergunta

  • Cara é o seguinte,

    Consegui conectar ao banco de dados! to precisando validar um usuário no banco mas o sistema apresenta erro na seguinte linha do código.

    senha = comando.ExecuteScalar

    Imports System.Data
    Imports System.Data.OleDb
    
    Public Class Form1
    
        Dim senha As String
    
        Dim conn As New OleDb.OleDbConnection
        Dim comando As New OleDb.OleDbCommand
        Dim sConnString As String = _
       "Provider=OraOLEDB.Oracle;" & _
       "Data Source=DBPROD;" & _
       "User ID=dbauser;" & _
       "Password=dbaprod"
    
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            conn = New OleDb.OleDbConnection(sConnString)
            comando.Connection = conn
            conn.Open()
    
            lbstatus.Visible = True
    
        End Sub
    
    
        Private Sub btentrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btentrar.Click
    
            Try
    
                comando.Connection = conn
                comando.CommandText = "SELECT SENHA FROM vedi_usuario Where LOGIN=@nomeUsuario"
                comando.Parameters.AddWithValue("@nomeUsuario", txtusuario.Text)
    
                senha = comando.ExecuteScalar
    
                conn.Close()
    
    
                If util.GeraHash(txtsenha.Text).Equals(senha) Then
                    My.Forms.Sistema.Show()
                    Me.Hide()
                Else
                    lbmsglogon.Visible = True
                    txtsenha.Focus()
                End If
    
            Catch ex As Exception
                MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
                 conn.Dispose()
            End Try
    
        End Sub
    
    End Class
    
    segue a classe Util
    Imports System.Security.Cryptography
    Imports System.Text
    
    Public Class util
    
        Public Shared Function GeraHash(ByVal texto As String) As String
    
            'Cria um objeto enconding para assegurar o padrão
            'de encondig para o texto origem
            Dim Ue As New UnicodeEncoding()
    
            'Retorna um byte array baseado no texto origem
            Dim ByteSourceText() As Byte = Ue.GetBytes(texto)
    
            'Instancia um objeto MD5
            Dim Md5 As New MD5CryptoServiceProvider()
    
            'Calcula o valor do hash para o texto origem
            Dim ByteHash() As Byte = Md5.ComputeHash(ByteSourceText)
    
            'Converte o valor obtido para o formato string
            Return Convert.ToBase64String(ByteHash)
        End Function
    
    End Class

    "A tecnologia só é tecnologia para quem nasceu antes dela ter sido inventada." Abilio Aguiar
    quarta-feira, 24 de março de 2010 01:14

Respostas

  • Olá Ablio,

    De acordo com a linha que especificou (senha = comando.ExecuteScalar), lembre-se que o comando ExecuteScalar() retorna um object e ele so deve ser utilizado para bustar 1 (UM) e somente um dado por exemplo Nome, ou um código a unica preocupação é com a quantidade de registro retornado você tem que garantir que somente 1 campo será retornado.

    Verifique a sua consulta e certifique-se que nao exista mais de um usuário ou algo assim.

    Espero que nesse meio tempo, já tenha resolvido a sua dúvida.

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    quarta-feira, 7 de abril de 2010 06:19

Todas as Respostas

  • Qual erro?

     


    Visite a Zona .NET: http://zonadotnet.wordpress.com | http://lblima.blogspot.com
       
    quarta-feira, 24 de março de 2010 20:32
    Moderador
  • Abilio,

    Conforme o Leonardo qual o erro apresentado.

    ou Você já conseguiu resvolver?

     

    att,

    Fernanda

     


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    terça-feira, 30 de março de 2010 13:16
    Moderador
  • Abilio,

    talvez o erro ocorra porque talvez o banco de dados que você esteja ultilizando, não suporte os parametros do NameSpace OleDb. Acontecu comigo mas o banco de dados que eu ultilizava era Access 2003 e os parametros não eram compativeis ou seja o banco de dados não reconhecia.

    Lembrando que isso é uma suposição. você tem que nos informar o tipo de erro que ocorre nesta linha...

    terça-feira, 30 de março de 2010 21:45
  • Olá Ablio,

    De acordo com a linha que especificou (senha = comando.ExecuteScalar), lembre-se que o comando ExecuteScalar() retorna um object e ele so deve ser utilizado para bustar 1 (UM) e somente um dado por exemplo Nome, ou um código a unica preocupação é com a quantidade de registro retornado você tem que garantir que somente 1 campo será retornado.

    Verifique a sua consulta e certifique-se que nao exista mais de um usuário ou algo assim.

    Espero que nesse meio tempo, já tenha resolvido a sua dúvida.

     


    Abraço, Espero ter ajudado. Caso sim, marque-a como tal.
    quarta-feira, 7 de abril de 2010 06:19