Hej
Hur ska man bära sig åt för att bygga upp en databasfråga som varierar beroende på vad användaren vill ska vara med. Exempelvis om man ska söka efter bilar, så kanske användaren vill söka på pris, färg, årsmodell osv, och låt säga att det är 20 olika saker. Användaren kan välja alla alternativ som den vill söka på. Om man skulle bygga det i applikationen med dataset, adaptrar och bll:er så skulle man vara tvungen att ha med alla kombinationer av sökningar som kan tänkas göra. Alternativet skulle vara att bygga en sql-fråga direkt från själva sidan. Så min fråga är hur man ska göra på bästa sätt?
Varierande sql-fråga
4 svar · 374 visningar · startad av antux
Bygg sql-satsen med kriterer baserat på vad användaren valt.
Tex dropdowner, med årsmodell
value=0 välj årsmodell
value=1996 1996
...
string sql = "SELECT * FROM cars WHERE Id > 0";
Skapa @Year som sql param
if(ddlYear.SelectedItem.Value != "0")
sql += " AND year = @Year ";
osv...
Ungefär alltså, konceptuellt. Inget hi-tech men det funkar :bire
Jag har en sådan sökfunktion för ordrar i ett orderhanteringssystem som jag skrev i vb.net åt en kund i australien. Har för mig att det blev ca 200 rader kod för att bygga ihop den sql satsen :)
Det beror lite på hur avancerat du vill göra det. Det frequz rekommenderar är helt ok. Börja där och gör den mer avancerad allt eftersom. Det du ska tänka är vad är det minsta jag behöver för att det här ska fungera.. dvs du testar först med ett formulärfält.
WHERE kolumn = @formulärvärde
sedan när du fått det att funka lägger du till nästa
AND kolumn2 = @formulärvärde2
När du känner att du är färdig med det kan du bygga på ytterligare med LIKE och IN för att tillåta sökning på icke kompletta söksträngar.
Det jag menar är att användaren kan söka på op och få fram Opel.
Skapa en klass/helperklass som heter typ SearchCarParameters, och sedan i din dao eller vad du nu användare bygger upp frågan utifrån dessa parametrar. På det viset lättare att validera alla parametrar och snyggare rent OO-mässigt