Frage

Ich möchte eine Funktion implementieren, die es dem Benutzer ermöglicht, etwa Folgendes einzugeben:

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

was ist gleich:

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

Kennen Sie vielleicht Lösungen, die für mich nützlich sein könnten?Meine zweite Frage ist, wo in der Anwendungsstruktur soll ich sie umwandeln?Im Anwendungscode oder irgendwie in der Datenbank?

Meine App ist in C# geschrieben und stellt über ADO.NET eine Verbindung zu SQL Server 2008 her.

Für Hinweise, Pseudocode usw. wäre ich sehr dankbar.

Dank im Voraus !

War es hilfreich?

Lösung

Mit SQL Server können Sie benutzerdefinierte Funktionen definieren (siehe zum Beispiel dieser Artikel).Wenn Sie eine Funktion definiert haben low Dann wäre der erste Code, den Sie geschrieben haben, eine vollkommen gültige SQL-Abfrage, und Sie müssten überhaupt keine Vorverarbeitung durchführen.Die Erklärung würde ungefähr so ​​aussehen:

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

Wenn Sie mehr Fuzzy-Sprache als nur Funktionsaufrufe zulassen möchten, wäre das ein weiteres (und deutlich komplizierteres) Problem.Mir ist keine Bibliothek bekannt, die das tut, und es könnte eine ziemliche Herausforderung sein, dies selbst zu implementieren.(Vielleicht möchten Sie weitere Beispiele hinzufügen, damit wir sehen können, was Sie meinen.)

Wenn Sie dem Benutzer erlauben, reine SQL-Abfragen zu schreiben, sollte der Benutzer natürlich jemand sein, dem Sie vertrauen können (da er problemlos alle Daten aus Ihrer Datenbank löschen kann).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top