[ASP/SQL] Dynamische Querie in ASP.net

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • HeepH
  • Registratie: December 2003
  • Laatst online: 06-05 17:50

HeepH

Dope Rapper

Topicstarter
Ik heb dit statische sqp statement in asp.net:

dim strKiesKleur As String = "SELECT * FROM auto WHERE auto.Kleur='blauw'"

er word uit een dropdownlist waar verschillende kleuren in staan, altijd uit de database de blauwe autos gepakt en op het scherm getoont.

Nu wil ik dat wanneer ik een kleur kies, deze kleur wordt gebruikt als kleur om uit de database te lezen. Daarvoor heb ik het volgende commando gebruikt:

dim strkleur as string = drpkleur.selecteditem.text
dim strKiesKleur As String = "SELECT * FROM auto WHERE auto.Kleur="
strKiesKleur &= strkleur

Nou zou ik uit de dropdownlist met keuzekleuren bijvoorbeeld “rood” kunnen kiezen en dan zouden alle autos die rood zijn in de database op mn scherm getoont moeten worden. Maar ik krijg de volgende foutmelding:

Exception Details: System.Data.OleDb.OleDbException: Waarden voor een of meer vereiste parameters ontbreken

Het deel:

WHERE auto.kleur=”
strKiesKleur &= strkleur

is gebaseerd op een voorbeeld uit een boek. Maar daar werkt het en bij mij niet.
Kan iemand mij misschien vertellen wat er fout is aan het SQL statement? De rest moet goed zijn, want wanneer ik gewoon * selecteerd wordt het commande wel gewoon uitgevoerd.
Je mist de single quotes in vergelijking met het originele voorbeeld.
ik heb allerlei verschillende combinaties van quote's geprobeerd, maar de meeste geven dezelfde fout of worden als commentaar geinterpreteerd. Kun jij me vertellen hoe de quotes precies moeten ? Ik heb me werkelijk dood gezocht, en blind gestaard op die code.


offtopic:
Meteen het topic op slot doen zonder mij de kans te geven te reageren op hetgeen wat jij zegt, zonder een duidelijk verhaaltje waarom het topic op slot gaat (want zo basic vind ik het niet, en ik heb weldegelijk verschillende oplossingen proberen te zoeken) is geen stijl imho. Misschien is dit voor jouw koek en ei en doe je dit dagelijks, ik probeer het me inderdaad aan te leren, en voor mij is dit lang niet zo makkelijk als het lijkt, als het me met een handboek voor de beginnende asp'er en een internetverbinding niet lukt zal het toch wel niet zo heel makkelijk zijn...Desnoods kijk je even in mijn posthistorie. Ik weet hoe je hier op tweakers.net jezelf moet gedragen....

:)

[ Voor 4% gewijzigd door HeepH op 20-04-2005 21:29 ]

http://specs.tweak.to/16495


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
clique

of mocht het toch het geval zijn dat je het niet goed wilt leren:

code:
1
string sqlQuery = "SELECT * FROM tabel WHERE kleur = \'" + comboBox.SelectedText + "'\ ";


Let op de single quotes dus (die ik ge-escaped heb met een \ omdat mijn voorbeeldcode C# is (jaja, ik weet het dat je met een @ niet hoeft te escapen etc.. :P )

[ Voor 68% gewijzigd door whoami op 20-04-2005 21:34 ]

https://fgheysels.github.io/


  • HeepH
  • Registratie: December 2003
  • Laatst online: 06-05 17:50

HeepH

Dope Rapper

Topicstarter
daar werd ik de vorige keer ook al naar verwijzen,maar ik begrijp niet wat je daar mee bedoelt te zeggen....gaarne iets meer woorden...

[ Voor 3% gewijzigd door HeepH op 20-04-2005 21:34 ]

http://specs.tweak.to/16495


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 23:36

gorgi_19

Kruimeltjes zijn weer op :9

:/

Zo maar een topic heropenen is not done.
WHERE auto.kleur=”
strKiesKleur &= strkleur
Is simpelweg fout.

Vergelijk
Visual Basic .NET:
1
dim strKiesKleur As String = "SELECT * FROM auto WHERE auto.Kleur='blauw'"

met jouw code:
code:
1
dim strKiesKleur As String = "SELECT * FROM auto WHERE auto.Kleur=" & strkleur

En wat mis je dan? De single quotes voor blauw. Je wil een string vergelijken en met SQL Server / MS Access moet je dus ' gebruiken.

Verder heb ik ook al aangegeven dat je moet kijken naar parametrized queries; een letterlijk voorbeeld staat in de FAQ aangegeven en je creeert nu op voorhand al applicaties die zo lek zijn als een mandje, waarvan we een pooltje kunnen leggen of ze binnen 6 maanden compleet gesloopt worden dmv een SQL Injection Attack.

Iig; Je topic is dicht en het is onterecht? Lees hier!
HeefStan schreef op woensdag 20 april 2005 @ 21:34:
daar werd ik de vorige keer ook al naar verwijzen,maar ik begrijp niet wat je daar mee bedoelt te zeggen....gaarne iets meer woorden...
Dat je paramtrized queries moet gebruiken en geen SQL statements moet opbouwen. De term is parametrized queries en zijn op google genoeg artikelen en voorbeelden van te vinden op die manier.

[ Voor 20% gewijzigd door gorgi_19 op 20-04-2005 21:36 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.