cari

Rumah  >  Soal Jawab  >  teks badan

Cara menggunakan fungsi OR untuk pertanyaan MySQL VB.NET

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粉674999420P粉674999420271 hari yang lalu409

membalas semua(1)saya akan balas

  • P粉434996845

    P粉4349968452024-03-31 15:56:23

    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 untuk memastikan perkara yang perlu berurusan dengan sumber yang tidak terurus dijaga.

    balas
    0
  • Batalbalas