Ir para o conteúdo
DevilRocks92

Não inserir dados repetidos

Mensagens Recomendadas

DevilRocks92

Boas, P@P

Eu estou a fazer um sistema de log in, mas ao registar eu quero que nao adicione usernames iguais:

Imports MySql.Data.MySqlClient
Public Class Admin_Reg
    Dim server As String = "Server=localhost;Database=escola_musica;Uid=root;Pwd=;"
    Dim con As New MySqlConnection

    Private Sub Admin_Reg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        con.ConnectionString = server

        Try
            If con.State = ConnectionState.Closed Then
                con.Open()
            Else
                con.Close()
                MsgBox("Ligação falhada!!")
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Public Sub admin_reg(ByRef sqlstate As String)
        Dim sql_ver As String = "SELECT username FROM admin WHERE username = '" & user_box.Text & "'"
        Dim cmd As New MySqlCommand(sql_ver, con)
        Dim dr As MySqlDataReader

        With cmd
            .CommandText = sqlstate
            .CommandType = CommandType.Text
            .Connection = con
            .ExecuteNonQuery()
        End With
        cmd = New MySqlCommand(sql_ver, con)
        dr = cmd.ExecuteReader

        If user_box.Text = dr(sql_ver) Then
            MsgBox("jhgja")
        End If
        con.Close()



        If pass_box.Text <> cpass_box.Text Then
            MsgBox("Passwords não correspondem.")
        Else
            MsgBox("Adicionado com sucesso!!")
            con.Dispose()
        End If


    End Sub

    Private Sub reg_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles reg_button.Click
        Dim sql As String = "INSERT INTO admin (username, pass) VALUES('" & user_box.Text & "', '" & pass_box.Text & "')"
        admin_reg(sql)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Login.Show()
        Me.Close()
    End Sub
End Class

Quando faço registar dá-me erro no cmd.executereader..

Alguem me pode ajudar?

Obrigado

DevilRocks92

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DevilRocks92

Eu estava a fazer desta maneira, o outro codigo era a experimentar:

Imports MySql.Data.MySqlClient
Public Class Admin_Reg
    Dim server As String = "Server=localhost;Database=escola_musica;Uid=root;Pwd=;"
    Dim con As New MySqlConnection

    Private Sub Admin_Reg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        con.ConnectionString = server

        Try
            If con.State = ConnectionState.Closed Then
                con.Open()
            Else
                con.Close()
                MsgBox("Ligação falhada!!")
            End If
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Public Sub admin_reg(ByRef sqlstate As String)
        Dim sql_ver As String = "SELECT username FROM admin WHERE username = '" & user_box.Text & "'"
        Dim cmd As New MySqlCommand(sql_ver, con)
        Dim dr As MySqlDataReader

        With cmd
            .CommandText = sqlstate
            .CommandType = CommandType.Text
            .Connection = con
            .ExecuteNonQuery()
        End With
     

        If pass_box.Text <> cpass_box.Text Then
            MsgBox("Passwords não correspondem.")
        Else
            MsgBox("Adicionado com sucesso!!")
            con.Dispose()
        End If


    End Sub

    Private Sub reg_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles reg_button.Click
        Dim sql As String = "INSERT INTO admin (username, pass) VALUES('" & user_box.Text & "', '" & pass_box.Text & "')"
        admin_reg(sql)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Login.Show()
        Me.Close()
    End Sub
End Class

Estava a pensar criar uma variavel boolean por exemplo "user_ver" quando textbox1.text = user_ver dava erro e nao adicionava na base de dados.

Será que dá bem?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Quando disse que tinhas imensos erros aí, não me estava a referir a isso, estava-me a referir a estes pontos:

[*]Estás a criar um sub (admin_reg) onde estás a utilizar incorrectamente a variável que lá criaste

[*]Com o código actual, independentemente de as passwords coincidirem, ele vai adicionar

[*]Deves utilizar parâmetros para uma melhor percepção do código e segurança

[*]Não é aconselhado fazeres o que estás a fazer (tudo num só sub) visto que vais fazer duas coisas completamente distintas (SELECT & INSERT)

Tendo isto em conta, o código está de bandeja nos links que te dei. :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DevilRocks92

Quando disse que tinhas imensos erros aí, não me estava a referir a isso, estava-me a referir a estes pontos:

[*]Estás a criar um sub (admin_reg) onde estás a utilizar incorrectamente a variável que lá criaste

[*]Com o código actual, independentemente de as passwords coincidirem, ele vai adicionar

[*]Deves utilizar parâmetros para uma melhor percepção do código e segurança

[*]Não é aconselhado fazeres o que estás a fazer (tudo num só sub) visto que vais fazer duas coisas completamente distintas (SELECT & INSERT)

Tendo isto em conta, o código está de bandeja nos links que te dei. :)

Eu estava pouco procupado com isso...

E se eu criar um module com esse sub e chamava o procedimento, resulta certo?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Estás pouco preocupado com isto? Se não fizeres da maneira que te digo dificilmente vai funcionar como queres lol. Quer-se dizer, tu primeiro inseres os dados e só depois é que verificas se as passwords coincidem? Está bom!

Crias dois módulos distintos e isso fica a funcionar.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.