从数据库中选择radiobuttons?

时间:2014-12-23 11:58:44

标签: vb.net select

我希望我的数据库也可以从我的访问数据库中选择radiobuttons。但是,每当我尝试运行程序并提供所需信息时,都会出现错误

  

"错误:查询表达式中字符串中的语法错误' username = asjjm'   和密码=' ksjadklf'和教师='错误'和学生=   '假。 "

我真的不明白这样的错误,因为我只是一个初学者。谁能告诉我什么是错的?非常感谢你。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
    ' Check if username or password is empty
    If TxtPassword.Text = "" Or TxtUsername.Text = "" Then
        MessageBox.Show("Please complete the required fields.", "Authentication Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
        ' Both fields was supply
        ' Check if user exist in database
        ' Connect to DB
        Dim conn As New System.Data.OleDb.OleDbConnection()
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Thesis\Thesis\Database2.accdb"

        Try
            'conn.Open()
            'MsgBox("Susscess")

            Dim sql As String = "SELECT * FROM tbl_user WHERE username='" & TxtUsername.Text & "' AND password = '" & TxtPassword.Text & "' AND facultymember = '" & RadioButton1.Checked & "' AND student ='" & RadioButton2.Checked '""
            Dim sqlCom As New System.Data.OleDb.OleDbCommand(sql)

            'Open Database Connection
            sqlCom.Connection = conn
            conn.Open()

            Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

            If sqlRead.Read() Then
                MainStud.Show()
                Me.Hide()

            Else
                ' If user enter wrong username and password combination
                ' Throw an error message
                MessageBox.Show("Username, Password, and Account Type do not match!", "Authentication Failure", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                'Clear all fields
                TxtPassword.Text = ""
                TxtUsername.Text = ""

                'Focus on Username field
                TxtUsername.Focus()
                conn.Close()

            End If

        Catch ex As Exception
            MessageBox.Show("Error:" & ex.Message)
        End Try

    End If
End Sub

*修改  我完全按照@ chepe263说的那样做了两个新错误。

  

预期结束语   ' System.Data.Sql'是名称空间,不能用作表达式。   导致这些的原因是什么?注*我制作了无线电按钮,用于指示用户是否以教职员或学生的身份登录帐户。

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
    ' Check if username or password is empty
    If TxtPassword.Text = "" Or TxtUsername.Text = "" Then
        MessageBox.Show("Please complete the required fields.", "Authentication Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Else
        ' Both fields was supply
        ' Check if user exist in database
        ' Connect to DB
        Dim conn As New System.Data.OleDb.OleDbConnection()
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Thesis\Thesis\Database2.accdb"

        Try
            'conn.Open()
            'MsgBox("Susscess")

            Dim facultyMemberName As String
            Dim rbdtext As String
            If RadioButton1.Checked Then
                facultyMemberName = RadioButton1.Text
            End If

            If RadioButton2.Checked Then
            rbdtext = RadioButton2.Text
            End If

            Dim sql As String = "SELECT * FROM tbl_user WHERE username='" & TxtUsername.Text & "' AND password = '" & TxtPassword.Text & "' AND facultymember = '" & facultyMemberName & "' AND student ='" & rbdtext """

            Dim sqlCom As New System.Data.OleDb.OleDbCommand(Sql, conn)

            'Open Database Connection
            sqlCom.Connection = conn
            conn.Open()

            Dim sqlRead As System.Data.OleDb.OleDbDataReader = sqlCom.ExecuteReader()

            If sqlRead.Read() Then
                MainStud.Show()
                Me.Hide()

            Else
                ' If user enter wrong username and password combination
                ' Throw an error message
                MessageBox.Show("Username and Password do not match!", "Authentication Failure", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

                'Clear all fields
                TxtPassword.Text = ""
                TxtUsername.Text = ""

                'Focus on Username field
                TxtUsername.Focus()
                conn.Close()

            End If

        Catch ex As Exception
            MessageBox.Show("Error:" & ex.Message)
        End Try

    End If
End Sub

编辑*还没有结束。尝试了所有可能的解决方案但仍显示错误。对不起,如果它可能会让人感到困惑。我只是一个初学者。

2 个答案:

答案 0 :(得分:0)

你尝试这样的事情

if (RadioButton1.Checked)
{
rbdtext = RadioButton1.Text;
}
else if (RadioButton2.Checked)
{
rbdtext = RadioButton2.Text;
}
else 
{
rbdtext = RadioButton3.Text;
}

然后是你的SQL语句

 Dim sql As String = "SELECT * FROM tbl_user WHERE username='" & TxtUsername.Text & "' AND password = '" & TxtPassword.Text & "' AND facultymember = '" & rbdtext  & "' AND student ='" & rbdtext  '""

答案 1 :(得分:0)

在Button Click的Private sub

中声明一个新变量
Dim facultyMemberName as String

做Parth Akbari建议

If RadioButton1.Checked Then
    facultyMemberName = RadioButton1.Text
End If

(重复你有多个单选按钮)

然后放置正确的变量名称并修复字符串的结尾(单引号在双引号之前,它使它成为评论,没有好处)

Dim sql As String = "SELECT * FROM tbl_user WHERE username='" & TxtUsername.Text & "' AND password = '" & TxtPassword.Text & "' AND facultymember = '" & facultyMemberName   & "' AND student ='" & rbdtext  """

提示(只是意见)

  • 尝试使用ListBox或ComboBox而不是RadioButtons,因为您列出的是人名。你可以做点什么

    facultyMemberName = lstFacultyName.SelectedItem.Text

  • 尝试将sql查询放在文本框中,复制并使用您喜欢的SQL管理器运行它。您可以通过这种方式检测潜在的错误。

  • 尝试使用参数而不是将值连接到字符串。