База данных и отображение результатов - PullRequest
0 голосов
/ 10 мая 2019

Я новичок в кодировании.Кажется, я не могу дать результат в этом.Я создаю систему RFID-карт.

Когда я коснусь карты (с информацией в базе данных), данные будут сохранены (появится PictureBox1).Но когда я попробовал другую карту, которой еще нет в базе данных, код не соответствует синтаксису Else, или я должен сказать, что PictureBox2 не показывает, но Picturebox1 появляется.Что может быть другим способом для этого?Спасибо.Это код.

    Private Sub txtReceived_TextChanged(sender As Object, e As EventArgs) Handles txtReceived.TextChanged

    Dim mysql = "SELECT Schedule FROM tbl_patroninfo WHERE Schedule = @Sched"
    Dim myDate As Date = lbl_Date.Text
    myDate = Date.Today
    con = connectDB()
    con.Open()
    mycommand = New MySqlCommand(mysql, con)
    Dim dr As MySqlDataReader = mycommand.ExecuteReader
    Dim SelectCommand As New MySqlClient.MySqlCommand("Select Fullname From tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    Dim SelectCommand2 As New MySqlClient.MySqlCommand("select Department from tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand2.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text

    If dr.Read = False Then
        con.Close()
        con.Open()
        lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
        lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())
        mycommand = New MySqlCommand("update tbl_patroninfo set Schedule = @Sched WHERE PatronRFID = @PID", con)
        mycommand.Parameters.Add("@Sched", MySqlDbType.Date).Value = myDate
        mycommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
        mycommand.ExecuteNonQuery()
        PictureBox1.Visible = True
        con.Close()
    Else
        con.Close()
        con.Open()
        PictureBox2.Visible = True
        lbl_Full.Text = "RECORD NOT FOUND!"
        con.Close()
    End If
End Sub

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Кстати, спасибо за помощь @Daffas и @Charles May. Я просто сделал что-то не очень крутое, или я должен сказать «чит-код», чтобы заставить систему работать. Это только для целей проекта. Но на следующей версии системы я исправлю код. Я просто использовал некоторые надписи и текстовое поле catch-er и установил его в режим Hide. Вместо использования dr.HasRows (который мне не подходит), я использовал кодировки executeScalar и сделал это возможным. Это мой код:

    Dim SelectCommand As New MySqlClient.MySqlCommand("Select Fullname From tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    Dim SelectCommand2 As New MySqlClient.MySqlCommand("select Department from tbl_patroninfo where PatronRFID = @PID", con)
    SelectCommand2.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
    lbl_Full.Text = txt_Catch.Text
    lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
    lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())

    If txt_Catch.Text = lbl_Full.Text Then
        con.Close()
        con.Open()
        lbl_Full.Text = "RECORD NOT FOUND!"
        PictureBox2.Visible = True
        con.Close()
        txt_Catch.Clear()

    Else
        con.Close()
        con.Open()
        '  lbl_Full.Text = CStr(SelectCommand.ExecuteScalar())
        ' lbl_Department.Text = CStr(SelectCommand2.ExecuteScalar())
        mycommand = New MySqlCommand("update tbl_patroninfo set Schedule = @Sched WHERE PatronRFID = @PID", con)
        mycommand.Parameters.Add("@Sched", MySqlDbType.Date).Value = myDate
        mycommand.Parameters.Add("@PID", MySqlDbType.VarChar).Value = txtReceived.Text
        mycommand.ExecuteNonQuery()
        DataGridView1.Rows.Add(lbl_Full.Text, lbl_Time.Text)
        PictureBox1.Visible = True
        con.Close()

    End If
0 голосов
/ 10 мая 2019

Вместо dr.Read вы можете попробовать dr.HasRows (), он вернет false, если у него ничего нет.dr.Read обычно используется в циклах While:

While dr.Read
   ' Do stuff on the records here.
End While
...