• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoaoNascimento

Erro de fim de conectação a base de dados

11 mensagens neste tópico

Pessoal tou criando um form de login com conectação a base de dados sql, meu problema é que ao correr o programa diz que a ligação nao esta fechada...

O codigo é o seguinte:

   
Dim Constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\GestSal.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim db As New SqlClient.SqlConnection(Constr)
        db.Open()
        g_login = Me.UsernameTextBox.Text
        Dim strSenha As String = Me.PasswordTextBox.Text
        If g_login = String.Empty Or strSenha = String.Empty Then
            MessageBox.Show("Informação Incompleta. Preencha os campos com o nome do usuário e senha.", "Informação Incompleta")
            Me.UsernameTextBox.Focus()
            Return
        End If
        Dim strsql As String = "SELECT UserName, Senha FROM Utilizadores WHERE UserName='" & g_login & "' "
        Dim cm As New SqlClient.SqlCommand(strsql, db)
        Dim dr As SqlClient.SqlDataReader
        Dim valido As Boolean = False
        Dim Flag As Boolean = False
        Try
           db.Open() 'é aqui que aponta o erro
           dr = cm.ExecuteReader
            If dr.HasRows Then
                While dr.Read
                    If util.GeraHash(strSenha) = dr.Item("Senha") Then
                        valido = True
                    End If
                End While
                Flag = True
            End If
            dr.Close()
            iConta = iConta + 1
            If valido = True Then
                Me.Hide()
                frmMain.Show()
            ElseIf iConta > 3 Then
                Me.Text = "Login - Tentativa " & iConta.ToString
                MessageBox.Show(" Você ultrapassou o número de tentativas. Contate o suporte !", "Número de tentativas ultrapassado.")
                Me.Close()
            ElseIf Flag = False Then
                MessageBox.Show("Nome de usuário Inválido, tente novamente ! ", "Informação Inválida")
                Me.UsernameTextBox.Focus()
                Me.UsernameTextBox.Text = ""
                Me.PasswordTextBox.Text = ""
                Me.Text = "Login - Tentativa " & iConta.ToString
            Else
                MessageBox.Show("Senha Inválida, tente novamente ! ", "Informação Inválida")
                Me.UsernameTextBox.Focus()
                Me.PasswordTextBox.Text = ""
                Me.Text = "Login -  Tentativa " & iConta.ToString
            End If
        Catch exSqldb As SqlClient.SqlException
            MessageBox.Show(exSqldb.Message, "Erro de acesso ao Banco de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Erro genérico", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Finally
            If db.State = ConnectionState.Open Then
                db.Close()
            End If
            cm = Nothing
            dr = Nothing
            db.Dispose()
            GC.Collect()
            db.Close()
        End Try  

já tentei varias maneiras mas nao consigo resolver o problema...

P.S - Só mais uma coisa o codigo foi retirado do site http://www.macoratti.net/vbn_flg2.htm com alteraçoes claro...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Mas tu já está a abrir a ligação antes! Vê a amarelo:

 

Dim Constr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\GestSal.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
        Dim db As New SqlClient.SqlConnection(Constr)
        db.Open()
        g_login = Me.UsernameTextBox.Text
        Dim strSenha As String = Me.PasswordTextBox.Text
        If g_login = String.Empty Or strSenha = String.Empty Then
            MessageBox.Show("Informação Incompleta. Preencha os campos com o nome do usuário e senha.", "Informação Incompleta")
            Me.UsernameTextBox.Focus()
            Return
        End If
        Dim strsql As String = "SELECT UserName, Senha FROM Utilizadores WHERE UserName='" & g_login & "' "
        Dim cm As New SqlClient.SqlCommand(strsql, db)
        Dim dr As SqlClient.SqlDataReader
        Dim valido As Boolean = False
        Dim Flag As Boolean = False
        Try
           db.Open() 'é aqui que aponta o erro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois mas se retirar um ou outro aparece que a senha é invalida, mesmo introduzindo a correcta...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já retirei agora aparece que a senha é errada mesmo eu sabendo que esta bem conforme o user name

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é bem isto que quero mas talvex possa ajudar... Vou dar uma olhadela obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é bem isto que quero mas talvex possa ajudar

O que queres ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Apenas criar um formulario de login com os utilizadores da base de dados... Mas que todos tenham acesso ao mesmo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora