我正在尝试将Access数据库迁移到vb.net winform(.net框架)。我使用此软件的机会极为有限,因此我要部分解决每件事。我的目标是在任何人插手使用和访问数据库之前(一次一件事情)最终将数据转换为SQL Server。无论如何,我已经通过数据源建立了连接,创建了一个基本的登录表单,并重构了我从访问数据库中移植的代码。这就是我所拥有的...
Public intLogonAttempts As Long
Dim connection As New OleDbConnection(My.Settings.DataConnectionString)
Private Sub Btn_Login_Click(sender As Object, e As EventArgs) Handles Btn_Login.Click
Dim RetVal As Integer
' Check all information required has been inputted
If Txt_Username.Text = "" Then
MsgBox("Please enter a username.", vbOKOnly, "Required Data")
Txt_Username.Select()
Exit Sub
End If
If Txt_Password.Text = "" Then
MsgBox("Please enter a password.", vbOKOnly, "Required Data")
Txt_Password.Select()
Exit Sub
End If
'If connection.State = ConnectionState.Closed Then
' connection.Open()
'End If
Dim cmd As New OleDbCommand("SELECT * FROM User where [username] = ? AND [Password] = ?", connection)
cmd.Parameters.AddWithValue("@p1", Txt_Username.Text)
cmd.Parameters.AddWithValue("@p1", Txt_Password.Text)
connection.Open()
RetVal = CInt(cmd.ExecuteScalar())
If (RetVal = 1) Then
' Login successful
MsgBox("Successful login")
My.Settings.savedUsername = Txt_Username.Text
My.Settings.savedPassword = Txt_Password.Text
My.Settings.Save()
Else
' Login unsuccessful
intLogonAttempts = intLogonAttempts + 1
If intLogonAttempts >= 3 Then
MsgBox("You do not have access to this database. Please contact admin.", vbCritical, "Restricted Access!")
Application.Exit()
Exit Sub
Else
MsgBox("Password Invalid. Please Try Again", vbOKOnly, "Invalid Entry!")
Txt_Password.Select()
End If
End If
End Sub
但是,当我的代码达到“ RetVal = CInt(cmd.ExecuteScalar())”时,将返回以下错误;
System.Data.OleDb.OleDbException:'FROM子句中的语法错误。'
我在这里怎么了?我以为这是由于sql语句引起的,但是我很确定自己有正确的答案吗?
我忘记了表名用户周围的[] ...
但是为了不浪费这篇文章,人们是否能够建议这也许是执行登录的最佳方法,还是那里有更好的解决方案?