0

我正在尝试创建一个简单的访问数据库登录表单,并在运行时收到上述错误。仅当用户组合正确时才会发生这种情况。如果登录不正确,则会显示无效消息。但是,如果我提供正确的凭据,则会引发此错误。有人可以告诉我这个错误的确切含义。它提到“从字符串“BT”到类型“布尔”的转换无效。其中“BT”是正确的用户名。

Private Sub login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlogin.Click
        ' If txtLogin.Text = "1" And txtPassBox.Text = "1" Then
        ' Form2.Show()
        ' Me.Hide()


        ' Else : MsgBox("Sorry, That combination is not recognised.", MsgBoxStyle.Critical, "Invalid Data Supplied")

        ' End If

        Dim user As String
        Dim password As String

        user = txtLogin.Text
        password = txtPassBox.Text

        If Me.UserTableAdapter.ScalarQueryLogin(user, password) Then
            MessageBox.Show("You have logged in")
        Else
            MessageBox.Show("You have supplied the wrong combo")
        End If

    End Sub

sql查询:

SELECT        [User], [Password]
FROM            [User]
WHERE        ([User] = ?) AND ([Password] = ?)
4

2 回答 2

1

看起来您的 ScalarQueryLogin 方法返回一个字符串,并且您正在使用它,就好像它是一个布尔值一样。

编辑:如果您告诉我们您的 ScalarQueryLogin 方法返回什么类型,则解决此问题会更容易。无论如何,尝试这样的事情:

Private Sub login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnlogin.Click
        ' If txtLogin.Text = "1" And txtPassBox.Text = "1" Then
        ' Form2.Show()
        ' Me.Hide()


        ' Else : MsgBox("Sorry, That combination is not recognised.", MsgBoxStyle.Critical, "Invalid Data Supplied")

        ' End If

        Dim user As String
        Dim password As String

        user = txtLogin.Text
        password = txtPassBox.Text

        If Me.UserTableAdapter.ScalarQueryLogin(user, password) IsNot Nothing Then
            MessageBox.Show("You have logged in")
        Else
            MessageBox.Show("You have supplied the wrong combo")
        End If

    End Sub
于 2013-10-07T15:17:33.247 回答
1

我很难完全回答这个问题,因为缺少很多数据,但是从错误和上下文来看,我会说它ScalarQueryLogin正在返回一个字符串(特别是它正在返回user。没有看到正在进行的实际查询是很难确定。我建议可能是这样的:

Dim resultValue as Object

resultValue = Me.UserTableAdapter.ScalarQueryLogin(user, password)

If resultValue Then
...

这将使您能够逐步了解并更好地了解您的查询返回的内容,并可能为您提供有关问题的更多见解。

于 2013-10-07T15:24:41.587 回答