Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kfs987

Como faço pra ler e atualizar dados no Mysql

Recommended Posts

eu tenho um sistema de login com os seguintes campos na tabela mysql

Username - Password - Hwid
  nick   -  pass   - 

ao fazer login com o usuário nick eu preciso verificar oq está cadastrado em hwid e caso n exista nada o programa deve cadastrar,

e caso esteja cadastrado algum valor o programa verifica se é igual ao do computador.

 

onde está o erro ?, basicamente eu preciso ler se for o caso atualizar e ler novamente para comparar os dados

 Dim Hwid As New clsComputerInfo
    Dim Cpu As String
    Dim Lan As String
    Dim Mobo As String
    Dim HD As String
        Cpu = Hwid.GetProcessorId
        Lan = Hwid.GetMACAddress
        Mobo = Hwid.GetMotherBoardID
        HD = Hwid.GetVolumeSerial
    Dim Key As String = (Cpu & Lan & Mobo & HD)

 ObjConn.ConnectionString = "server=localhost;" & "user id=Myuser;" & "password=Mypass;" & "database=Myuser;"
        Try
            ObjConn.Open()
        Catch ex As Exception
            InfluenceTextBox1.Enabled = True
            InfluenceTextBox2.Enabled = True
        End Try
        StrSql = "select UserName, Password, HWID from cadastro where UserName=@field1 and Password=@field2"
        ObjCmd = New MySql.Data.MySqlClient.MySqlCommand(StrSql, ObjConn)
        With ObjCmd
            .Parameters.AddWithValue("@field1", InfluenceTextBox1.Text)
            .Parameters.AddWithValue("@field2", InfluenceTextBox2.Text)
        End With
        ObjCmd.ExecuteNonQuery()
        ObjDr = ObjCmd.ExecuteReader
        If (ObjDr.Read()) Then
        If ObjDr.GetString("HWID") = "" Then
            StrSqlNew = "UPDATE vip SET HWID=@field where UserName=@field1 and Password=@field2"
            ObjCmdNew = New MySql.Data.MySqlClient.MySqlCommand(StrSqlNew, ObjConn)
            With ObjCmdNew
                .Parameters.AddWithValue("@field", Key)
                .Parameters.AddWithValue("@field1", InfluenceTextBox1.Text)
                .Parameters.AddWithValue("@field2", InfluenceTextBox2.Text)
            End With
            ObjCmdNew.Dispose()
        End If
        if ObjDr.GetString("HWID") = Key Then
        MsgBox("Hwid Confirmado", MsgBoxStyle.Critical)
        else
        MsgBox("Hwid Diferente", MsgBoxStyle.Critical)
        End If
        End If

consegui fazer funcionar criando 3 conexões

a 1º - checa o hwid e em seguida finaliza

a 2º - atualiza o hwid e em seguida finaliza

a 3º - checa se o hwid do pc é o registrado no servidor

 

se alguém tiver alguma forma mais limpa de fazer isso peço q poste o código, tem uma semana q comecei a programar em vb.net e tou meio q em faze de aprendizado ainda :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar a mesma conexão, sem fecha-la, é um meio também.

 

Só notei que você não está fazendo a verificação caso não retorne nenhuma linha, você sempre assume que exista um usuário cadastrado, mas se a pessoa digitar, por exemplo, o login errado, ele não vai retornar nenhuma linha e você vai setar o hwid para uma chave inexistente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.