Usuário com melhor resposta
Erro Mysql

Pergunta
-
Estou fazendo um login com nivel de acesso(admin e padrao), mas esta dando erro quando tento logar como padrao
'Not allowed to change the 'ConnectionString' property while the connection (state=Open)'
'Não é permitido alterar a propriedade' ConnectionString 'enquanto a conexão (estado = Abrir)'
Esse é o codigo
Imports MySql.Data.MySqlClient Imports Cadastro.Criptografia Public Class Login ' TODO: Inserir código para realizar autenticação personalizada utilizando o nome de usuário e senha fornecidos ' (Consulte https://go.microsoft.com/fwlink/?LinkId=35339). ' A entidade de segurança personalizada pode ser anexada à entidade de segurança da thread atual da seguinte forma: ' My.User.CurrentPrincipal = CustomPrincipal ' onde CustomPrincipal é a implementação de IPrincipal usada para realizar a autenticação. ' Subsequentemente, My.User irá retornar informações de identificação encapsuladas num objeto CustomPrincipal ' como nome de usuário, nome de exibição etc. Dim con As New MySqlConnection Dim cmd, cmd1 As New MySqlCommand Dim read As MySqlDataReader Dim tentativas As Integer Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btok.Click If tblgin.Text.Trim = "" Then MessageBox.Show("Informe a seu login !", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) tblgin.Focus() Exit Sub End If If tblsenha.Text.Trim = "" Then MessageBox.Show("Informe a sua senha !", "Senha", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) tblsenha.Focus() Exit Sub End If If cbacesso.Text.Trim = "" Then MessageBox.Show("Selecione nivel de acesso: Admin ou Usuário !", "Nivel de acesso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) cbacesso.Focus() Exit Sub End If End Sub Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click Me.Close() End Sub Private Sub Login_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing End End Sub Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load con.ConnectionString = "server=localhost;user id=user;password=root;database=cadastro;" 'Erro acontece aqui cmd.Connection = con cmd.CommandType = CommandType.Text cmd.CommandText = "Select * From administradores Where Usuario=@Usuario and Senha=@Senha" cmd1.Connection = con cmd1.CommandType = CommandType.Text cmd1.CommandText = "Select * From upadrao Where Usuario=@Usuario and Senha=@Senha" End Sub Private Sub verificaLogin() With read If .Read Then MessageBox.Show("Acesso permitido ! Bem Vindo """ & tblgin.Text & """", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information) If cbacesso.SelectedIndex = 0 Then Me.Hide() 'Ponha seu formulario aqui formularioAtual = New CadFuncionario() formularioAtual.Show() ElseIf cbacesso.SelectedIndex = 1 Then Me.Hide() 'Ponha seu formulario aqui formularioAtual = New Cadastro() formularioAtual.Show() End If Else tentativas += 1 If tentativas >= 3 Then MessageBox.Show("Número de tentativas foi excedido !", "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) 'Fecha aplicação End Else tblgin.Clear() tblsenha.Clear() MessageBox.Show("Login ou senha inválida !", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End If tblgin.Focus() End With End Sub Private Sub cbacesso_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbacesso.SelectedIndexChanged If cbacesso.SelectedIndex = 0 Then cmd.Parameters.Add("usuario", MySqlDbType.VarChar) cmd.Parameters.Add("senha", MySqlDbType.VarChar) cmd.Parameters("usuario").Value = tblgin.Text cmd.Parameters("Senha").Value = GetHash(tblsenha.Text) con.Open() read = cmd.ExecuteReader verificaLogin() con.Close() End If If cbacesso.SelectedIndex = 1 Then cmd1.Parameters.Add("usuario", MySqlDbType.VarChar) cmd1.Parameters.Add("Senha", MySqlDbType.VarChar) cmd1.Parameters("usuario").Value = tblgin.Text cmd1.Parameters("Senha").Value = GetHash(tblsenha.Text) con.Open() read = cmd1.ExecuteReader verificaLogin() con.Close() End If End Sub Private Sub tbsenha_KeyDown(ByVal eventSender As System.Object, ByVal eventArgs As KeyEventArgs) Handles tblsenha.KeyDown Dim KeyCode As Short = eventArgs.KeyCode If KeyCode = System.Windows.Forms.Keys.Return Then btok.Focus() End If If KeyCode = System.Windows.Forms.Keys.Escape Then End End If End Sub Private Sub Login_Closed(sender As Object, e As EventArgs) Handles Me.Closed End End Sub End Class
Esse codigo esta com base em um exemplo de login do macoratti
http://www.macoratti.net/vbn_log1.htm
Mesmo que a conexão esteja sem close(no meu codigo), no exemplo tambem esta, eu testei o exemplo com mysql e funcionou certinho, quem poder me apontar o erro ou saber alguma solução agradeço desde ja
Respostas
-
Boa tarde, PedroHFAlmeida.
Veja se esse link pode te ajudar:Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta PedroHFAlmeida quarta-feira, 20 de dezembro de 2017 12:06
-
Boa tarde.
Veja se te ajuda, para comparação:
Public Shared Function Consulta_Login(ByVal Evento As Integer, ByVal Login As String, ByRef Senha As String, ByRef Status As String) As Integer Dim CONN As MySqlConnection CONN = New MySqlConnection(str_connectionstring) Dim CMD As MySqlCommand = CONN.CreateCommand Dim RD As MySqlDataReader Try CMD.Parameters.Add(New MySqlParameter("@evento", Evento)) CMD.Parameters.Add(New MySqlParameter("@login", Login)) CONN.Open() CMD.CommandText = "Select senha, status From operadores Where evento = @evento AND login = @login" RD = CMD.ExecuteReader If RD.HasRows Then 'operador cadastrado RD.Read() Senha = RD("senha").ToString Status = RD("status").ToString Consulta_Login = 1 Else 'operador não cadastrado Consulta_Login = 0 End If RD.Close() CONN.Close() Catch Consulta_Login = -1 If CONN.State = 1 Then CONN.Close() End Try End Function
MARIANO1776
- Marcado como Resposta PedroHFAlmeida quarta-feira, 20 de dezembro de 2017 12:06
Todas as Respostas
-
Boa tarde, PedroHFAlmeida.
Veja se esse link pode te ajudar:Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Marcado como Resposta PedroHFAlmeida quarta-feira, 20 de dezembro de 2017 12:06
-
Boa tarde.
Veja se te ajuda, para comparação:
Public Shared Function Consulta_Login(ByVal Evento As Integer, ByVal Login As String, ByRef Senha As String, ByRef Status As String) As Integer Dim CONN As MySqlConnection CONN = New MySqlConnection(str_connectionstring) Dim CMD As MySqlCommand = CONN.CreateCommand Dim RD As MySqlDataReader Try CMD.Parameters.Add(New MySqlParameter("@evento", Evento)) CMD.Parameters.Add(New MySqlParameter("@login", Login)) CONN.Open() CMD.CommandText = "Select senha, status From operadores Where evento = @evento AND login = @login" RD = CMD.ExecuteReader If RD.HasRows Then 'operador cadastrado RD.Read() Senha = RD("senha").ToString Status = RD("status").ToString Consulta_Login = 1 Else 'operador não cadastrado Consulta_Login = 0 End If RD.Close() CONN.Close() Catch Consulta_Login = -1 If CONN.State = 1 Then CONN.Close() End Try End Function
MARIANO1776
- Marcado como Resposta PedroHFAlmeida quarta-feira, 20 de dezembro de 2017 12:06
-