VB.NET, как передать значение по базе данных в функцию - PullRequest
0 голосов
/ 15 апреля 2019

извините за этот нубский вопрос. Я просто хочу знать, какой правильный синтаксис для этого? Я просто хочу вернуть утверждение, если оно истинное или ложное.

У меня есть эта функция

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 это вернет истину. Если не У меня ошибка в dr = cmd.ExecuteReader

Во время выполнения команды произошла фатальная ошибка.

Какой правильный синтаксис для передачи значения в функцию ?? СПАСИБО.

1 Ответ

0 голосов
/ 15 апреля 2019

Вы используете параметры в своем операторе select, поэтому вам нужно добавить их в коллекцию параметров команды.Конечно, вам нужны блоки использования ... завершения использования.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...