webForumDet fria alternativet

Varierande sql-fråga

.NET

4 svar · 376 visningar · startad av antux

Medlem sedan feb. 20048 inlägg
Frågan#1

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?

Medlem sedan feb. 2005280 inlägg
#2

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

Medlem sedan jan. 20022 440 inlägg
#3

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.

Medlem sedan dec. 19996 522 inlägg
#4

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

Medlem sedan jan. 20022 440 inlägg
260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)