使用了VB.NET、LINQ和SQL。使用的是Visual Studio 2008和安装了全文搜索功能的Microsoft SQL Server 2008 Express Edition,运行在Windows XP Professional SP3上。不知道这些信息是否有帮助,但还是想告诉所使用的平台。
以下代码是登录表单的背景代码。该表单通过LINQ调用SQL数据库。主要调用的表是"users",主要查询的列是"UserName"、"PssWrd"和"UserActive"。可以随意命名这些列。"username"和"password"列是nvchar(25)类型,而"useractive"列是nvchar(5)类型。选择nvchar(5)类型是因为喜欢使用布尔逻辑,并且不知道如何在SQL中创建一个表示是或否的列,所以就在用户的数据表中放入"true"或"false"。
下面的代码是登录按钮点击事件的处理程序,它调用Check_Details子程序来验证用户凭证。
Public Class Login
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Me.Check_Details()
End Sub
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub
Private Sub Login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
Me.UsersTableAdapter.FillBy(Me.SecurityDataSet1.Users)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Check_Details()
Dim UName As String = Me.UserNameBox.Text.ToString.Trim
Dim PWord As String = Me.PassWordBox.Text.ToString.Trim
Dim sd As New SecurityDataSetTableAdapters.UsersTableAdapter
Dim query = From check In sd.GetData _
Select check.LogonName, check.PssWrd, check.UserActive _
Where LogonName = UName AndAlso PssWrd = PWord AndAlso UserActive = "True"
If query.Count() = 1 Then
MessageBox.Show("confirmed")
Else
MessageBox.Show("Password Is Incorrect or no longer Valid", "Password Problem")
End If
End Sub
Private Sub unmaskpw_CheckedChanged_(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles unmaskpw.CheckedChanged
If unmaskpw.Checked = True Then
Me.PassWordBox.PasswordChar = ""
Else
Me.PassWordBox.PasswordChar = "*"
End If
End Sub
End Class
这段代码检查输入的用户凭证是否正确。声明将表单框中的文本转换为字符串值,以便与LINQSQL查询一起使用。第二组声明将表适配器序列转换为简短的字符串名称,以便在SQL查询中使用。查询检查输入的用户名和密码是否匹配。它还验证当前用户是激活还是未激活状态。IF命令执行SQL查询,并告诉它计算有多少回复。如果计数不产生1(它应该产生的),它将转到IF命令的第二部分。如果结果是积极的,IF命令将运行其下的任何命令。
在表单上有一个复选框,用于打开/关闭密码掩码。