vb.net 结合MySQL数据库制作登录界面;主要思想:
1、先用.net自带ping类ping通主机则进行数据库链接,否则提示用户服务器链接失败,并禁止用户输入,点击确定登录按钮!这是为了防止应用长时间无响应!
2、当链接成功时,在用户名textboxchang 创建用户名验证,错误提示,正确显示正确!增强用户体验
3、密码textboxchang事件创建密码验证,错误提示,正确则做出正确提示!增强用户体验
4、登录按钮,再次验证用户名密码,正确则通过!这是为了防止期间有改动!
以下为数据库数据表图
以下为演示图
Imports MySql.Data.MySqlClient
Public Class LOGIN
#Region "数据库操作部分"
Public cnStr As String = "database=db_user;server=127.0.0.1;Uid=test;Pwd=test;"
Public cn As New MySqlConnection(cnStr)
Public Function resultDataTable(ByVal sqlstr As String) As DataTable
Dim mda As New MySqlDataAdapter(sqlstr, cn)
Dim dt As New DataSet
Try
mda.Fill(dt)
Return dt.Tables(0)
Catch ex As Exception
Return Nothing
Finally
cn.Close()
End Try
End Function
#End Region
#Region "事件处理"
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 取消.Click
Me.Close()
End Sub
Private Sub UsernameTextBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles 用户名.KeyUp
If e.KeyCode = Keys.Enter Then
密码.Focus()
End If
End Sub
#End Region
#Region "登录页面"
Private Sub 登录页面_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim stra As String = Replace(Split(Split(cnStr, "=")(2), ";")(0), " ", "")
If My.Computer.Network.Ping(stra) = True Then
cn.Open()
总提示.Text = "服务器连接-->>畅通"
总提示.ForeColor = Color.Green
确定.Enabled = True
用户名.Enabled = True
密码.Enabled = True
Else
总提示.Text = "服务器连接-->>失败"
logintime.Enabled = True
logintime.Interval = 700
确定.Enabled = False
用户名.Enabled = False
密码.Enabled = False
Exit Sub
End If
End Sub
#End Region
#Region "密码验证"
Private Sub 确定_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 确定.Click
Dim userstr As DataTable = resultDataTable("select user from tb_user where user='" & 用户名.Text & "';")
Dim passstr As DataTable = resultDataTable("select pass from tb_user where user='" & 用户名.Text & "';")
If userstr.Rows.Count = 0 Then
用户名提示.Text = "✘用户不存在"
Exit Sub
ElseIf userstr.Rows(0)(0).ToString <> 用户名.Text Then
用户名提示.Text = "✘用户不存在"
Exit Sub
Else
If passstr.Rows.Count = 0 Then
密码提示.Text = "✘密码错误"
Exit Sub
ElseIf passstr.Rows(0)(0).ToString <> 密码.Text Then
密码提示.Text = "✘密码错误"
Exit Sub
Else
用户名提示.Text = "√"
用户名提示.ForeColor = Color.Green
密码提示.Text = "√"
密码提示.ForeColor = Color.Green
'----------------------------------------------------------------------
Me.Hide()
MsgBox("登录--成功")
'这里添加要打开的窗体
End If
End If
End Sub
#End Region
#Region "用户体验"
Private Sub 用户名_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 用户名.TextChanged
用户名提示.Text = ""
Dim userstr As DataTable = resultDataTable("select user from tb_user where user='" & 用户名.Text & "';")
If userstr.Rows.Count = 0 Then
用户名提示.Text = "✘用户不存在"
用户名提示.ForeColor = Color.Red
Exit Sub
ElseIf userstr.Rows(0)(0).ToString <> 用户名.Text Then
用户名提示.Text = "✘用户不存在"
用户名提示.ForeColor = Color.Red
Exit Sub
Else
用户名提示.Text = "√"
用户名提示.ForeColor = Color.Green
End If
End Sub
Private Sub 密码_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 密码.TextChanged
密码提示.Text = ""
Dim passstr As DataTable = resultDataTable("select pass from tb_user where user='" & 用户名.Text & "';")
If passstr.Rows.Count = 0 Then
密码提示.Text = "✘密码错误"
密码提示.ForeColor = Color.Red
Exit Sub
ElseIf passstr.Rows(0)(0).ToString <> 密码.Text Then
密码提示.Text = "✘密码错误"
密码提示.ForeColor = Color.Red
Exit Sub
Else
密码提示.Text = "√"
密码提示.ForeColor = Color.Green
End If
End Sub
#End Region
#Region "计时器"
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles logintime.Tick
If 总提示.Text = "" Then
总提示.Text = "服务器连接-->>失败"
Else
总提示.Text = ""
End If
End Sub
#End Region
Private Sub 总提示_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 总提示.Click
End Sub
End Class