使用VB制作的新数据库登录表单

时间:2015-06-09 14:27:02

标签: database vb.net search datagrid

我有几天正在寻找问题,但找不到答案。它们是youtube上的1000个例子“如何登录frm”但是在VB 2012中没有使用VB中的自制数据库。

所以我已经有一个Bindingsource,Tableadapter,TableAdapterManager和一个使用tablegrid的DatabaseDataSet。现在我想先访问系统,然后才能访问该程序的其他部分。用户必须将他的名字写入文本框,当他的名字存在时(在数据库中),他就可以访问。

我的问题是检查“用户”列。我可以用什么代码来请求?

2 个答案:

答案 0 :(得分:0)

理想情况下,您希望用户输入他/她的用户名和密码FIRST,然后在btnSubmit_Click事件中,您应该查询数据源NEXT并检查结果是否有效。

建议不要加载所有用户名/密码,然后查找匹配项。

仅查询单个用户名/密码对是“更好/更安全”。

这不是完整的代码,而是这些内容。

Private Sub Submit_Click(sender As System.Object, e As System.EventArgs) Handles Submit.Click
    '
    If Trim(UsernameTextBox.Text) <> "" Then
        If Trim(PasswordTextBox.Text) <> "" Then
            '--> Query database here <--
            'SELECT * From MyUsersSqlTable WHERE dbUsername='" trim(usernametextbox.text) & "' AND dbPassword='" & trim(passwordtextbox.text) & "'"
            'If VALID Then
            '   Do something
            'Else
            '   MsgBox("Error - Invalid login credentials")
            '   Do something else
            'End If
        Else
            MsgBox("Error - No password entered")
        End If
    Else
        MsgBox("Error - No username entered")
    End If
    '
End Sub

显然,你不会DIRECTLY将用户输入的数据输入查询,你应该使用parametersVALIDATE数据来确保它不会在你的脚本中注入一些东西!

答案 1 :(得分:0)

您可以查看用户使用您的表记录输入的用户名和密码。如果两个字段都匹配,则以其他方式登录会抛出一条消息。但是,您可能还需要检查区分大小写的密码。 您可以参考以下代码。

Protected Sub SignIn(sender As Object, e As EventArgs) Handles btnsignin.ServerClick



    Dim last_login As String
    last_login = Now.Date.ToString("dd/MM/yy")

    Try
        conn.Close()
        conn.Open()
        Dim cmd As New MySqlCommand
        cmd.CommandText = "SELECT * FROM user WHERE user_email = ('" & txtemail.Value.ToString & "') AND user_password=('" & txtpassword.Value.ToString & "') COLLATE utf8_bin"
        cmd.Connection = conn
        Dim da As New MySqlDataAdapter
        Dim ds As New DataSet
        da.SelectCommand = cmd
        da.Fill(ds)
        txtemail.DataBind()
        txtpassword.DataBind()
        Dim usercount = ds.Tables(0).Rows.Count
        If usercount = 1 Then
            reader = cmd.ExecuteReader
            Session("user_email") = txtemail.Value.ToString
            If reader.Read Then
                Session("user_name") = reader.Item("user_name").ToString
                'SetUserName(user_name)
                Session("last_login") = reader.Item("last_login").ToString
                str = "UPDATE user SET last_login = ('" & last_login.ToString & "') WHERE user_email = ('" & txtemail.Value.ToString & "') "
                cmd = New MySqlCommand(str, conn)
                reader.Close()
                cmd.ExecuteNonQuery()

            End If

        Else
            MsgBox("Incorrect email or password", MsgBoxStyle.Exclamation)
            Return

        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    conn.Close()

End Sub