OVH Cloud OVH Cloud

Syntaxe Clause Where suite

1 réponse
Avatar
Aline B.
Voici un bout de code...

adaOLEDB.SelectCommand =3D New OleDbCommand("SELECT * FROM=20
Commande WHERE CodeIDCommande =3D ?", cnnOLEDB)

adaOLEDB.SelectCommand.Parameters.Add("@strCodeIDDivers",=20
OleDbType.VarChar)

adaOLEDB.SelectCommand.Parameters
("@strCodeIDDivers").Value =3D strCodeIDComm

cmbOLEDB =3D New OleDbCommandBuilder(adaOLEDB)

dstCommande.Clear()
adaOLEDB.Fill(dstCommande)


Cette m=E9thode est-elle correcte?
Merci!





Et quand est-il d'un RowFilter d'un Dataview?
Ex.:=20
Me.DataView.RowFilter =3D "CodeID =3D '" & gstrCodeID & "'"

Le m=EAme probl=E8me se r=E9p=E8te ici!
Merci!




>-----Message d'origine-----
>Le principe est le m=EAme, quel que soit la commande SQL se=20
trouvant dans ton
>objet Command.
>
>Quel est ton erreur ? Donne-nous aussi ton code.
>
>A bient=F4t,
>
>--=20
>Pascal Belaud - Microsoft France
>OlyMars: SQL Server Centric .NET Code Generator
>
>http://www.microsoft.com/france/msdn/olymars
>http://www.olymars.net/latest.zip (interim build)
>http://blogs.msdn.com/olymars
>
>
>"Aline B." <anonymous@discussions.microsoft.com> wrote in=20
message
>news:024f01c49f51$ae512f60$a601280a@phx.gbl...
>Ok! cela marche tr=E8s bien pour une requ=EAte s=E9lection
>simple en lecture.
>Mais si j'emploie la m=EAme requ=EAte pour par contre ajouter
>des donn=E9es avec CommandBuilder, cela ne fonctionne pas!
>Y-aurait-il une autre m=E9thode!
>Merci!
>
>>-----Message d'origine-----
>>Salut Aline,
>>
>>Ecrire ce genre de code a deux inconv=E9nients:
>>- te compliquer la vie dans le cas pr=E9cis que tu=20
d=E9cris :-
>)
>>- rendre ton code attaquable pour les attaques connues
>sous le nom "SQL
>>Injection" ou "Injection SQL"
>>
>>Voici comment faire d'une pierre deux coups:
>>
>> adaOLEDB.SelectCommand =3D New OleDbCommand("SELECT
>>DescriptionCategClient FROM CategorieClient WHERE
>DescriptionCategClient <>
>>@Description", cnnOLEDB)
>>
>> Dim monParam1 As New OleDbParameter
>("@Description",
>>OleDbType.VarChar, 255)
>> monParam1.Value =3D mCategDesc
>> adaOLEDB.SelectCommand.Parameters.Add(monParam1)
>>
>> ' puis la suite de ton code
>>
>>A bient=F4t,
>>
>>--=20
>>Pascal Belaud - Microsoft France
>>OlyMars: SQL Server Centric .NET Code Generator
>>
>>http://www.microsoft.com/france/msdn/olymars
>>http://www.olymars.net/latest.zip (interim build)
>>http://blogs.msdn.com/olymars
>>
>>
>>"Aline B." <anonymous@discussions.microsoft.com> wrote in
>message
>>news:347601c49f4d$9d507350$a301280a@phx.gbl...
>>Dans une clause WHERE (SQL), comment =E9crire cette clause
>>quand dans la variable que j'envoie, il y a un ou des
>>apostrophe.
>>
>>Ex.: adaOLEDB.SelectCommand =3D New OleDbCommand("SELECT
>>DescriptionCategClient FROM CategorieClient WHERE
>>DescriptionCategClient <> '" & mCategDesc & "'",=20
cnnOLEDB)
>>
>>Cette commande fonctionne tr=E8s bien, sauf si je passe
>>comme variable (dans mCategDesc) ex.: =E2ge d'or
>>
>>Il y a une apostrophe dans -- =E2ge d'or
>>
>>Comment =E9crire cette commande pour que le ou les mots
>>pass=E9s dans la variable passe sans probl=E8me avec des
>>apostrophe?
>>
>>Merci pour vos r=E9ponses!

1 réponse

Avatar
J-M Rabilloud [MVP]
"Aline B." a écrit :

Voici un bout de code...

adaOLEDB.SelectCommand = New OleDbCommand("SELECT * FROM
Commande WHERE CodeIDCommande = ?", cnnOLEDB)

adaOLEDB.SelectCommand.Parameters.Add("@strCodeIDDivers",
OleDbType.VarChar)

adaOLEDB.SelectCommand.Parameters
("@strCodeIDDivers").Value = strCodeIDComm

cmbOLEDB = New OleDbCommandBuilder(adaOLEDB)

dstCommande.Clear()
adaOLEDB.Fill(dstCommande)


Cette méthode est-elle correcte?
Merci!



Oui au niveau de la syntaxe rien à dire.


Et quand est-il d'un RowFilter d'un Dataview?
Ex.:
Me.DataView.RowFilter = "CodeID = '" & gstrCodeID & "'"

Le même problème se répète ici!
Merci!




Me.DataView.RowFilter = "CodeID = '" & gstrCodeID.Replace("'", "''") & "'"