我有几天正在寻找问题,但找不到答案。它们是youtube上的1000个例子“如何登录frm”但是在VB 2012中没有使用VB中的自制数据库。
所以我已经有一个Bindingsource,Tableadapter,TableAdapterManager和一个使用tablegrid的DatabaseDataSet。现在我想先访问系统,然后才能访问该程序的其他部分。用户必须将他的名字写入文本框,当他的名字存在时(在数据库中),他就可以访问。
我的问题是检查“用户”列。我可以用什么代码来请求?
答案 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
将用户输入的数据输入查询,你应该使用parameters
或VALIDATE
数据来确保它不会在你的脚本中注入一些东西!
答案 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