Domanda

Vorrei implementare una funzione, che consentirà all'utente di digitare qualcosa del genere:

"select * from products where low(price);" 

Cosa è uguale a:

"select * from products where (price >=0) And (price <= 50);"

Forse conosci qualche soluzioni che saranno utili per me? La mia seconda domanda è dove nella struttura dell'applicazione dovrei trasformarlo? Nel codice dell'applicazione o in qualche modo nel database?

La mia app è scritta in C# e si collega a SQL Server 2008 tramite ADO.NET.

Sarei molto grato per eventuali suggerimenti, pseudocodi, ecc.

Grazie in anticipo !

È stato utile?

Soluzione

SQL Server consente di definire le funzioni definite dall'utente (vedi Ad esempio questo articolo). Se hai definito una funzione low Quindi il primo codice che hai scritto sarebbe una query SQL perfettamente valida e non avresti bisogno di fare alcun pre-elaborazione. La dichiarazione sembrerebbe approssimativamente così:

 CREATE FUNCTION low(@price)
 RETURNS boolean AS
 BEGIN
   RETURN (@price >= 0) AND (@price <= 50)
 END

Se vuoi consentire un linguaggio più sfocato rispetto alle semplici chiamate di funzione, allora sarebbe un altro problema (e significativamente più complicato). Non sono a conoscenza di nessuna biblioteca che lo faccia e implementalo potrebbe essere una vera sfida. (Potresti voler aggiungere più esempi, in modo da poter vedere cosa intendi).

Naturalmente, se si consente all'utente di scrivere query SQL grezzi, l'utente dovrebbe essere qualcuno di cui ti puoi fidare (perché può facilmente abbandonare tutti i dati dal tuo database).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top