Jump to content
yekxmerr

[Dúvida] Ajuda a criar Login em VB Studio 2005

Recommended Posts

yekxmerr

Boas, estou a necessitar de ajuda para fazer um login em Visual Studio 2005 ( Vb.net ). Fiz uma pesquisa no forum, e encontrei um código:

http://www.portugal-a-programar.pt/index.php?showtopic=9744

Mas não consegui decifrar, muito bem o "OrigensDE" , também penso que este código seja de VB6 ou anterior.

A minha base de dados está feita em SQL, porque a minha aplicação é cliente-servidor.

Agradecia a ajuda !

Share this post


Link to post
Share on other sites
jpaulino

E o que já tens feito ?

Basicamente a implementação de um login é a confirmação numa base de dados se um utilizador/password indicados correspondem a informação guardada.

Assim, se tiveres no SQL uma tabela de utilizadores, onde esteja o login/password, só tens de fazer um ExecuteScalar() como uma query e saber se é válido ou não.

O comando Transact SQL é algo do género:

"SELECT COUNT(*) FROM TabelaUtilizadores WHERE [login] = '" & Me.txtUtilizador.Text & "' AND [password] = '" & Me.txtPassword.Text & "'"

Se o resultado for 1 no ExecuteScalar() é porque o login/pass é válido!

Share this post


Link to post
Share on other sites
yekxmerr

Mt obrigado, eu tinha pensado nisso, mas não sabia o codigo para meter a query.

Envio o valor das txt para uma variavel, dps if variavel = "username" then inicio.show ( por exemplo ) else popupbox com a mensagem errada ;)

Muito obrigado

Share this post


Link to post
Share on other sites
yekxmerr

Não estou a conseguir, eu não sou grande expert. Começei a dar VB.net este ano. Eu sei como o fazer, não sei é o código para fazer. Que codigo preciso para declarar o sql ? Não tenho também de declarar a connection string da DB no form load ?

Share this post


Link to post
Share on other sites
yekxmerr

Neste momento tenho o seguinte código:

 

  Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BaseDados.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

        Dim SQL As String = "SELECT Username and Password FROM Login WHERE [username] = '" & Me.txt_username.Text & "' AND [password] = '" & Me.txt_password.Text & "'"
        Dim connection As New SqlConnection(myConnectionString)
        Dim command As New SqlCommand(SQL, connection)

        Try
            connection.Open()
        Catch myerror As SqlException
            MessageBox.Show("Erro a conectar a base de dados: " & myerror.Message)
        End Try

        Dim myAdapter As New SqlDataAdapter
        Dim myCommand As New SqlCommand()
        myCommand.Connection = connection
        myCommand.CommandText = SQL
        'start query
        myAdapter.SelectCommand = myCommand
        Dim myData As SqlDataReader
        myData = myCommand.ExecuteReader

        'see if user exits.
        If myData.HasRows = 0 Then
            MessageBox.Show("Detalhes de Login Inválidos", "Erro de Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            Inicio.Show()
            Me.Visible = False
        End If

E dá-me erro no: myData = myCommand.ExecuteReader e a mensagem de erro: Incorrect syntax near the keyword 'and'.

Share this post


Link to post
Share on other sites
jpaulino

Altera o comando SQL para

        Dim SQL As String = "SELECT [username], [Password] FROM Login WHERE [username] = '" & Me.txt_username.Text & "' AND [password] = '" &

Mas não leste o que te mostrei pois não ?

Share this post


Link to post
Share on other sites
yekxmerr

Li, mas ainda não terminei. Tenho estado a ler outros tópicos desse blog, contem informação muito útil.

Share this post


Link to post
Share on other sites
jpaulino

Sim, é que se tivesses lido não fazias o código dessa forma!

Para que estás a usar um SqlDataAdapter ? Vais ligar essa informação a alguma coisa.

Repara numa coisa, por o blog ser meu eu não me interessa se gostam ou não, mas só não quero que o pessoal faça as coisas por fazer e pior ainda, faça mal. Só isso ;)

Share this post


Link to post
Share on other sites
yekxmerr

Funcionou. Muito obrigado pela tua ajuda. Falta-me muitas bases ainda porque não aprofundei o Vb.net ainda, só aprendi VB6 e não dei conteúdos muito avancados. Li os links que me deste, e também pesquisei alguns posts neste fórum e noutros, e vi código. Depois com os tutoriais consegui perceber o que é que as coisas faziam.

Sem incomodar muito, queria só te perguntar mais uma questão.Tenho um formulário aberto, que tem uma listbox com valores, e ao lado tenho um botão para ir para um outro formulário que adiciona registos referentes há listbox. O que pretendo fazer é, quando fecho o formulário, a list box actualize. Tenho mais ou menos a ideia como isso se faz, mas corrige-me se estou em erro. Faço o registo no forumário, quando fecho o formulário, faço um fill ao data set. Depois na list box adiciono uma linha de código que faz update ao data set. Mas isto não está a funcionar, sei que posso fazer isto com um SQLtrigger, mas os meus profs disseram que isto era apenas 2 linhas de código que era muito simples.

Share this post


Link to post
Share on other sites
yekxmerr

O código final ficou assim:

        Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BaseDados.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

        Dim SQL As String = "SELECT [username], [Password] FROM Login WHERE [username] = '" & Me.txt_username.Text & "' AND [password] = '" & Me.txt_password.Text & "'"
        Dim connection As New SqlConnection(myConnectionString)
        Dim command As New SqlCommand(SQL, connection)

        Try
            connection.Open()
        Catch myerror As SqlException
            MessageBox.Show("Erro a conectar a base de dados: " & myerror.Message)
        End Try

        Dim reader As SqlDataReader = command.ExecuteReader()

        If reader.HasRows = 0 Then
            MessageBox.Show("Detalhes de Login Inválidos", "Erro de Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            Inicio.Show()
            Me.Visible = False
        End If

Acho que está mais correcto assim.

Share this post


Link to post
Share on other sites
yekxmerr

Está a funcionar muito bem. Consegues me responder á questão que coloquei. E olha, isto é uma aplicação cliente - servidor, é um projecto PAP para a escola. Neste momento estou a trabalhar localmente com a base dados, mas quando for para ligar ao servidor, basta alterar a data source e meter o ip da maquina, que isto actualiza tudo.

Share this post


Link to post
Share on other sites
yekxmerr

Sim, tenho uma maquina virtual com Window Server 2003. Criei o domínio em WINS, instalei o Microsoft SQL Server 2005 Express Edition, e o SQL Server Magement Studio Express. Vou ler esse tutorial da connection string, e no fim do programa passo para la a base de dados. Obrigado pela ajuda

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • 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.