Jump to content

form Logim em VS2008 e Mysql


carlosmorais
 Share

Recommended Posts

Boa tarde,

Estou a tentar criar um programa Visual Studio 2008, em que a 1ª form tem um "login" para aceder á 2ª form. A pass e a senha estão numa base de dados em Mysql. Até aqui tudo bem, ou seja ja tenho a base de dados criada assim com a estrutura das forms, o minha dúvida é o codigo para que vai verificar se o login esta correto...

Só preciso de saber como o faço ou onde posso ver como o fazer, é que ja procurei mas o que encontro é para acsses ou SQL e não consigo associar bem.

fica aqui um print da form, mais da tabela da base de dados.

http://img10.imageshack.us/i/exemplod.png/

cumps.

Link to comment
Share on other sites

é +/-isto que eu quero, mas para MySql..

eu sei que tenho que começar com:

        Dim conexaoMySQL As MySqlConnection

        Dim daMySQL As MySqlDataAdapter

        Dim dsMySQL As DataSet

        Dim strSQL As String

        conexaoMySQL = New MySqlConnection("server=localhost; user id=root; password=123pt; database=login")

      (...)

só que começa logo com erros:

Type 'MySqlConnection' is not defined

Type MySqlDataAdapter is not defined

Type 'MySqlConnection' is not defined

PS: ainda sou noob, ainda só sei o basico (criar forms, botoes, labels, e codigo tipo me.close(); form2.show()..)

Obrigado.

Link to comment
Share on other sites

boas

tens aqui uma maneira

Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\myDatabase.mdf';Integrated Security=True;User Instance=True"

Dim SQL As String = " Select * from login where user = @user"

Dim connection As New SqlConnection(myConnectionString)

Dim command As New SqlCommand(SQL, connection)

command.Parameters.Add("@user", SqlDbType.VarChar).Value = user.Text

connection.Open()

Dim total As Integer = command.ExecuteScalar()
        If total = 0 Then
            MsgBox("O Utilizador não existe!!!")
        Else
            Dim reader As SqlDataReader = command.ExecuteReader()

            If reader.HasRows Then
               While reader.Read()
                    If pass.Text = reader.Item("senha").ToString Then
                        MsgBox("Bem-Vindo, " + user.Text.ToString)
                    Else
                        MsgBox("A Password introduzida está incorrecta!!")
                    End If
                End While
            End If
        End If

connection.Close()
connection = Nothing
command = Nothing

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Link to comment
Share on other sites

Se o erro for nas linhas

command.Parameters.Add("@user", SqlDbType.VarChar).Value = user.Text

If pass.Text = reader.Item("senha").ToString Then

MsgBox("Bem-Vindo, " + user.Text.ToString)

tens de as alterar para o nome que deste aos Textboxs no form Login

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Link to comment
Share on other sites

já consegui. mas depois não dá pois nao tenho o SQL, contudo ja estou a perceber como isto funciona.  ?

ja tive a pesquisar e a aplicar o código anterior e penso que com uma ligação ao MySql ficaria +/- isto:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim myConnectionString As String
        Dim connection As MySqlConnection
        Dim SQL As String = " Select * from login where user = @user"
        Dim command As New MySqlCommand(SQL, connection)

        myConnectionString = "Server=myServer;" & _
          "Database=login;" & _
          "Uid=root;" & _
          "Pwd=123pt;" & _
          "Connect Timeout=30;"
        connection = New MySqlConnection(myConnectionString)
        connection.Open()
        Dim total As Integer = command.ExecuteScalar()
        If total = 0 Then
            MsgBox("O Utilizador não existe!!!")
        Else
            Dim reader As MySqlDataReader = command.ExecuteReader()

            If reader.HasRows Then
                While reader.Read()
                    If tbsenha.Text = reader.Item("senha").ToString Then
                        MsgBox("Bem-Vindo, " + tbuser.Text.ToString)
                    Else
                        MsgBox("A Password introduzida está incorrecta!!")
                    End If
                End While
            End If
        End If

        connection.Close()
        connection = Nothing
        command = Nothing
    End Sub

Não sei se podes corrigir, ou talvez outra pessoa o possa.

Só está a dar 1 erro que não consigo resolver:

Variable 'connection' is used before it has been assigned a value. A null reference exception could result at runtime.

(refere-se a esta linha: Dim command As New MySqlCommand(SQL, connection)

Muito Obrigado!  👍

Link to comment
Share on other sites

Simples erro esse

Nessa linha:

Dim command As New MySqlCommand(SQL, connection)

Voce esta usando a variavel connection sem antes passar algum valor a ela ou estanciar

Mude acima para assim:

Dim connection As new MySqlConnection

e passe a String de conexao para ela.

Ah e para montar a String de conexao use a Classe do Proprio provider do MYSQL: MysqlConnectionStringBuilder...

Segue Link : http://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySql~Devart.Data.MySql.MySqlConnectionStringBuilder.html

Abraços

Link to comment
Share on other sites

eu fiquei com o codigo assim:

 Dim myConnectionString As String
        Dim connection As New MySqlConnection
        Dim SQL As String = " Select * from login where user = @user"
        Dim command As New MySqlCommand(SQL, connection)

        myConnectionString = "Server=localhost;" & _
          "Database=login;" & _
          "Uid=root;" & _
          "Pwd=123pt;" & _
          "Connect Timeout=30;"
        connection = New MySqlConnection(myConnectionString)
        connection.Open()
        Dim total As Integer = command.ExecuteScalar()
        If total = 0 Then
            MsgBox("O Utilizador não existe!!!")
        Else
            Dim reader As MySqlDataReader = command.ExecuteReader()

            If reader.HasRows Then
                While reader.Read()
                    If tbsenha.Text = reader.Item("senha").ToString Then
                        MsgBox("Bem-Vindo, " + tbuser.Text.ToString)
                    Else
                        MsgBox("A Password introduzida está incorrecta!!")
                    End If
                End While
            End If
        End If

        connection.Close()
        connection = Nothing
        command = Nothing

não tem erros, mas depois de executar, ao clicar no botão login dá o seguinte problema:

http://img84.imageshack.us/i/proug.png/

cumps.

Link to comment
Share on other sites

Assim a primeira vista, falta-te indicar o nome de utilizador, que ele tem de procurar

Experimenta por isto antes do  connection.Open()

command.Parameters.Add("@user", SqlDbType.VarChar).Value = tbuser.Text.tostring

A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Link to comment
Share on other sites

nessa linha nova fica com o erro:

'MySqlConnection' is a type and cannot be used as an expression.

:wallbash:

cumps

Opa desculpa eu tava sem vb aqui... segue.

Connection.ConnectionString = myConnectionString

ai tu pode por uma condição quando for abrir.

If Connection.State <> ConnectionState.Open Then

    Connection.Open()

End If

ai ele so abre a conexao caos ela nao esteja aberta !




quando te falei do MysqlConnectionStringBuilder estava falando disso olha so..

La na parte de cima eu Declaro e estancio a classe

Dim StringConexao As New MySqlConnectionStringBuilder

depois eu monto uma Sub assim

        Private Sub MontarStringConnection()

            Try

                'Abrindo o With e montando a string de Conexao
                With StringConexao

                    .Server = "SEU_SERVIDOR"
                    .Password = "SUA_SENHA"
                    .UserID = "SEU_USUARIO"
                    .Database = "SEU_BANCO"
                    .ConnectionLifeTime = 30

                End With

            Catch ex As Exception

                MessageBox.Show(ex.Message)

            End Try

        End Sub

Faço o programa ler a sub para montar a conexao

MontarStringConnection

e passo a string de conexao para a conexao..

Connection.ConnectionString = StringConexao.ConnectionString

Pronto...

Link to comment
Share on other sites

fica aqui o meu codigo final:

Imports MySql.Data.MySqlClient
...
Dim myConnectionString As String
        Dim connection As New MySqlConnection
        Dim MySQL As String = " Select * from usuarios "
        Dim command As New MySqlCommand(MySQL, connection)

        myConnectionString = "Server=localhost;" & _
          "Database=login;" & _
          "Uid=root;" & _
          "Pwd=123pt;" & _
          "Connect Timeout=30;"
        connection.ConnectionString = myConnectionString
        command.Parameters.Add("@user", MySqlDbType.VarChar).Value = tbutilizador.Text.ToString
        command.Parameters.Add("@senha", MySqlDbType.VarChar).Value = tbsenha.Text.ToString
        If connection.State <> ConnectionState.Open Then
            connection.Open()
        End If

        Dim reader As MySqlDataReader = command.ExecuteReader()
        If reader.HasRows Then
            While reader.Read()
                If tbsenha.Text = reader.Item("senha").ToString And tbutilizador.Text = reader.Item("user").ToString Then
                    tbsenha.Text = reader.Item("senha").ToString
                    MsgBox("Bem-Vindo, " + tbutilizador.Text.ToString)
                    Formprincipal.Show()
                    Me.Hide()
                Else
                    MsgBox("Os dados introduzidos estão incorretos")
                End If
            End While
        End If
        connection.Close()
        connection = Nothing
        command = Nothing

        Label2.Text = "logado como " + tbutilizador.Text.ToString
    End Sub

Um grande Obrigado a quem me ajudou.

Cumps.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.