Cara menggunakan fungsi OR untuk pertanyaan MySQL VB.NET
P粉674999420
P粉674999420 2024-03-30 20:23:02
0
1
372

Saya menghadapi masalah dengan kod terakhir untuk projek sekolah saya. Saya perlu memilih berbilang nilai untuk ID yang diberikan daripada lajur "actuelewerktuigselectie". Nilai-nilai ini kemudiannya perlu dimasukkan ke dalam pembolehubah untuk kegunaan selanjutnya dalam projek.

Saya hanya mendapat nilai ID pertama. Lihat di bawah kod semasa saya. Apakah yang boleh saya ubah untuk membetulkan kod saya untuk mendapatkan semua nilai?

Dim sCnnStr As String = My.Settings.sCnnStr
        Dim oCnn As New MySqlConnection(sCnnStr)
        Dim sSql As String = "select pfProfielfreesnummer, pfLopendemeters from actuelewerktuigselectie where (awsId=@1 OR awsId=@2 OR awsId=@3 OR awsId=@4 OR awsId=@5 OR awsId=@6 OR awsId=@7 OR awsId=@8)"
        Dim oCmd As MySqlCommand = New MySqlCommand(sSql, oCnn)

        oCmd.Parameters.AddWithValue("@1", 5)
        oCmd.Parameters.AddWithValue("@2", 6)
        oCmd.Parameters.AddWithValue("@3", 7)
        oCmd.Parameters.AddWithValue("@4", 8)
        oCmd.Parameters.AddWithValue("@5", 17)
        oCmd.Parameters.AddWithValue("@6", 18)
        oCmd.Parameters.AddWithValue("@7", 19)
        oCmd.Parameters.AddWithValue("@8", 20)

        oCnn.Open()
        Dim myReader As MySqlDataReader
        myReader = oCmd.ExecuteReader()
        While (myReader.Read())
            werktuignummer1 = (myReader.GetString(0))
            LopendeMeters1 = (myReader.GetDouble(1))

            werktuignummer2 = (myReader.GetString(2))
            LopendeMeters2 = (myReader.GetDouble(3))

            werktuignummer3 = (myReader.GetString(4))
            LopendeMeters3 = (myReader.GetDouble(5))

            werktuignummer4 = (myReader.GetString(6))
            LopendeMeters4 = (myReader.GetDouble(7))

            werktuignummer5 = (myReader.GetString(8))
            LopendeMeters5 = (myReader.GetDouble(9))

            werktuignummer6 = (myReader.GetString(10))
            LopendeMeters6 = (myReader.GetDouble(11))

            werktuignummer7 = (myReader.GetString(12))
            LopendeMeters7 = (myReader.GetDouble(13))

            werktuignummer8 = (myReader.GetString(14))
            LopendeMeters8 = (myReader.GetDouble(15))
        End While
        myReader.Close()
        oCnn.Close()

Semua kod ini saya ajar sendiri dalam beberapa bulan kerana saya tidak mendapat kursus yang saya perlukan untuk menyiapkan projek ini, tetapi saya hanya mengikutinya dan mempelajari asas vb.net dan MySql.

Lajur dan pembolehubah saya adalah dalam bahasa Belanda.

P粉674999420
P粉674999420

membalas semua(1)
P粉434996845

Mungkin anda mempunyai bilangan keputusan yang tidak diketahui, mungkin sehingga 8 keputusan. Jadi lebih baik menggunakan sesuatu untuk menyimpan hasil, yang storannya boleh dikembangkan mengikut keperluan untuk menampung seberapa banyak hasil yang dikembalikan daripada pertanyaan: anda boleh menggunakan Senarai untuk ini, asalkan anda mencipta sesuatu yang boleh mengandungi segala-galanya Data dikembalikan untuk setiap baris dalam pertanyaan senarai - ini boleh menjadi kelas dengan sifat yang memegang setiap pembolehubah. Mungkin lebih mudah untuk melihat kod yang saya cadangkan daripada menerangkannya:

Public Class ToolDatum
    Public Property ToolID As String
    Public Property LopendeMeter As Double

    Public Sub New()
        ' Empty constructor
    End Sub

    Public Sub New(werktuignummer As String, LopendeMeter As Double)
        Me.ToolID = werktuignummer
        Me.LopendeMeter = LopendeMeter
    End Sub

End Class

Public Function GetData() As List(Of ToolDatum)
    Dim toolData As New List(Of ToolDatum)

    Dim connStr As String = My.Settings.sCnnStr
    Dim sql As String = "SELECT pfProfielfreesnummer, pfLopendemeters
                         FROM actuelewerktuigselectie
                         WHERE (awsId = @P1 OR awsId = @P2 OR awsId = @P3 OR awsId = @P4 OR awsId = @P5 OR awsId = @P6 OR awsId = @P7 OR awsId = @P8)"

    Using conn = New MySqlConnection(connStr),
           cmd = New MySqlCommand(sql, conn)

        cmd.Parameters.Add("@P1", MySqlDbType.Int32).Value = 5
        cmd.Parameters.Add("@P2", MySqlDbType.Int32).Value = 6
        cmd.Parameters.Add("@P3", MySqlDbType.Int32).Value = 7
        cmd.Parameters.Add("@P4", MySqlDbType.Int32).Value = 8
        cmd.Parameters.Add("@P5", MySqlDbType.Int32).Value = 17
        cmd.Parameters.Add("@P6", MySqlDbType.Int32).Value = 18
        cmd.Parameters.Add("@P7", MySqlDbType.Int32).Value = 19
        cmd.Parameters.Add("@P8", MySqlDbType.Int32).Value = 20

        conn.Open()

        Using myReader = cmd.ExecuteReader()
            While (myReader.Read())
                toolData.Add(New ToolDatum(myReader.GetString(0), myReader.GetDouble(1)))
            End While

        End Using

    End Using

    Return toolData

End Function

Fungsi GetData (anda harus memberikannya nama deskriptif) akan mengembalikan senarai yang boleh anda ulangi untuk mendapatkan setiap hasil individu, seperti

Dim q = GetData()
For Each r In q
    Console.WriteLine(r.ToolID & " " & r.LopendeMeter)
Next

Saya akan AddWithValue 更改为 Add kerana yang pertama mungkin menyebabkan masalah yang tidak dijangka. Saya menukar nama parameter untuk bermula dengan huruf untuk mengelakkan masalah lain yang tidak dijangka.

Gunakan pengisytiharan a> untuk memastikan perkara yang perlu berurusan dengan sumber yang tidak terurus dijaga.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan