-1

对不起这个菜鸟问题。我只想知道正确的语法是什么?我只想返回该语句,如果它是真或假。

我有这个功能

Private Sub InsertTest(ByVal StudentID As Integer, ByVal SubjectID As Integer)
    Dim dr As MySqlDataReader
    Dim cmd As New MySqlCommand
    Dim myconn As MySqlConnection = New MySqlConnection("Data Source=localhost;Database=csais;User ID=root;Password=;")
    myconn.Open()

    Dim Query = "Select student_id,sub_id FROM student_subject WHERE student_id = @student_id AND sub_id = @sub_id"
    cmd = New MySqlCommand(Query, myconn)
    dr = cmd.ExecuteReader
    If dr.Read = True Then
        MessageBox.Show("This statement is true")
    Else
        MessageBox.Show("This statement is false")
    End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    InsertTest(2009500083, 1)
End Sub

如果我将@student_id 替换为2009500083 并将@sub_id 替换为1,它将返回true。如果不是,我在 dr = cmd.ExecuteReader 中有错误

命令执行期间遇到致命错误。

在函数中传递值的正确语法是什么?谢谢你。

4

2 回答 2

0

您在 select 语句中使用了参数,因此您需要将它们添加到命令的参数集合中。当然你需要 Using...End Using 块。

Private Sub InsertTest(ByVal StudentID As Integer, ByVal SubjectID As Integer)
    Dim RetVal As Integer
    Using myconn As MySqlConnection = New MySqlConnection("Data Source=localhost;Database=csais;User ID=root;Password=;")
        Dim Query = "Select Count(*) FROM student_subject WHERE student_id = @student_id AND sub_id = @sub_id"
        Using cmd As New MySqlCommand(Query, myconn)
            cmd.Parameters.Add("@student_id", MySqlDbType.Int32).Value = StudentID
            cmd.Parameters.Add("@sub_id", MySqlDbType.Int32).Value = SubjectID
            myconn.Open()
            RetVal = CInt(cmd.ExecuteScalar)
        End Using
    End Using
    If RetVal = 1 Then
        MessageBox.Show("This statement is true")
    Else
        MessageBox.Show("This statement is false")
    End If
End Sub
于 2019-04-15T02:49:07.293 回答
0

我知道这是旧的,但如果有人像我一样想知道的话。这是答案

Private Sub InsertTest(ByVal StudentID As Integer, ByVal SubjectID As Integer)
    Dim dr As MySqlDataReader
    Dim cmd As New MySqlCommand
    Dim myconn As MySqlConnection = New MySqlConnection("Data Source=localhost;Database=csais;User ID=root;Password=;")
    myconn.Open()

    Dim Query = "Select student_id,sub_id FROM student_subject WHERE student_id = @student_id AND sub_id = @sub_id"
    cmd = New MySqlCommand(Query, myconn)
    
    '====================================================
    ' this is where he missed it, you need to add your parameter
    ' you forgot to pass the parameters

    cmd.Parameters.AddWithValue("@student_id ", StudentID)
    cmd.Parameters.AddWithValue("@sub_id", SubjectID)

    '====================================================
   
    dr = cmd.ExecuteReader
    If dr.Read = True Then
        MessageBox.Show("This statement is true")
    Else
        MessageBox.Show("This statement is false")
    End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    InsertTest(2009500083, 1)
End Sub
于 2021-11-16T23:27:39.137 回答