Comment utiliser la fonction OR pour les requêtes MySQL VB.NET
P粉674999420
P粉674999420 2024-03-30 20:23:02
0
1
360

J'ai un problème avec le dernier morceau de code de mon projet scolaire. Je dois sélectionner plusieurs valeurs pour un identifiant donné dans la colonne "actuelewerktuigselectie". Ces valeurs doivent ensuite être insérées dans des variables pour une utilisation ultérieure dans le projet.

Je n'obtiens que la valeur du premier identifiant. Voir ci-dessous mon code actuel. Que puis-je changer pour corriger mon code et obtenir toutes les valeurs ?

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()

Tout ce code, je l'ai appris moi-même en quelques mois car je n'ai pas suivi les cours dont j'avais besoin pour mener à bien ce projet, mais je l'ai simplement suivi et j'ai appris les bases de vb.net et MySql.

Mes colonnes et variables sont en néerlandais.

P粉674999420
P粉674999420

répondre à tous(1)
P粉434996845

Vraisemblablement, vous avez un nombre inconnu de résultats, éventuellement jusqu'à 8 résultats. Il est donc préférable d'utiliser quelque chose pour stocker les résultats, dont le stockage peut être étendu selon les besoins pour accueillir autant de résultats renvoyés par la requête : vous pouvez utiliser une Liste pour cela, à condition de créer quelque chose qui puisse contenir tout. renvoyé pour chaque ligne d'une requête de liste - il peut s'agir d'une classe avec des propriétés contenant chaque variable. Il est probablement plus facile de regarder le code que j'ai suggéré que de l'expliquer :

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

La fonction GetData (vous devez lui donner un nom descriptif) renverra une liste que vous pourrez parcourir pour obtenir chaque résultat individuel, comme

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

Je le ferai AddWithValue 更改为 Add car le premier peut causer des problèmes inattendus. J'ai modifié les noms des paramètres pour qu'ils commencent par une lettre afin d'éviter d'autres problèmes inattendus.

Utilisez des déclarations a> pour garantir que les éléments qui doivent gérer des ressources non gérées sont pris en charge.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal