Imports System.Data.OleDb
公共类LoginForm Dim connstring As String =“Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\ Users \ User \ Desktop \ thesis \ YBIM.accdb” Dim conn As New OleDbConnection 'TODO:使用提供的用户名和密码插入代码以执行自定义身份验证 '(见http://go.microsoft.com/fwlink/?LinkId=35339) '然后可以将自定义主体附加到当前线程的主体,如下所示: 'My.User.CurrentPrincipal = CustomPrincipal 'CustomPrincipal是用于执行身份验证的IPrincipal实现。 '随后,My.User将返回封装在CustomPrincipal对象中的身份信息 '例如用户名,显示名称等
Private Sub LoginForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
conn.ConnectionString = connstring
If conn.State = ConnectionState.Closed Then
conn.Open()
MsgBox("welcome")
Else
MsgBox("Cannot connect to database")
End If
End Sub
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
Dim SqlQuery As String = ("SELECT * FROM tablelogin WHERE Username= @field1 AND Password=@field2")
Dim SqlCommand As New OleDbCommand
Dim Sqlrdr As OleDbDataReader
With SqlCommand
.CommandText = SqlQuery
.Connection = conn
.Parameters.AddWithValue("@field1", UsernameTextBox.Text)
.Parameters.AddWithValue("@field2", PasswordTextBox.Text)
.ExecuteNonQuery()
End With
Sqlrdr = SqlCommand.ExecuteReader()
If (Sqlrdr.Read() = True) Then
home.ShowDialog()
Me.Hide()
Else
MsgBox("wong input")
End If
End Sub
结束班
答案 0 :(得分:0)
您的代码中有两点需要注意,您可以采取补救措施。
1 *您正在错误地命名参数。 这样:
.Parameters.AddWithValue("@field1", UsernameTextBox.Text)
.Parameters.AddWithValue("@field2", PasswordTextBox.Text)
应该是这样的:
.Parameters.AddWithValue("field1", UsernameTextBox.Text)
.Parameters.AddWithValue("field2", PasswordTextBox.Text)
2 *您正在执行该命令两次。从With语句中删除.ExecuteNonQuery()
,
并改变:
Sqlrdr = SqlCommand.ExecuteReader()
到
Dim ret As Integer
ret = SqlCommand.ExecuteNonQuery()
而不是使用Sqlrdr.Read()
,只需检查ret> 0(ExecuteNonQuery返回受命令影响的行数)。