Ein Problem von SqlCommand mit Parametern für IN [duplizieren]

8

Anscheinend wird mit dem folgenden Code nichts so ausgegeben, wie es erwartet wird. Ich bin mir sicher, dass es damit zu tun hat, dass ich versucht habe, eine Liste von Elementen in @namelist zu schreiben. Natürlich ist es nicht nur ein Textersatz.

Wie kann ich dieses Problem lösen? Danke

%Vor%     
hong pei 30.05.2013, 17:19
quelle

3 Antworten

7

Leider werden SQL-Parameter nicht auf diese Weise aufgelöst , anders gesagt, das Backend erstellt nicht einfach eine sichere Zeichenfolge, die jeden Parameter durch seinen Wert ersetzt. Stattdessen müssen Sie eine Parameterliste dynamisch erstellen:

%Vor%

Und fügen Sie dann jeden Parameter hinzu:

%Vor%

Sie könnten diese Parameter natürlich in einer Schleife hinzufügen, wenn die Nummer bis zur Laufzeit unbekannt ist:

%Vor%

Wenn Ihre Liste von Tabellen in einem enum gespeichert wurde oder Sie sie mit einem regulären Ausdruck validieren konnten, wäre es auch ziemlich sicher, nur das rohe SQL selbst zu erstellen und überhaupt keine Parameter zu verwenden.

Dies ist natürlich einer der großen Gründe, warum ich PostgreSQL verwende; native Unterstützung für Arrays.

    
Mike Christensen 30.05.2013, 17:27
quelle
4

Wie bereits erwähnt, sind "in" -Listen usw. in ado.net notorisch peinlich; Aus diesem Grund bieten einige Tools bequeme Methoden, um zu helfen. Zum Beispiel bietet Dapper eine Variante der "in" -Syntax an, die automatisch auf die korrekte parametrisierte Form erweitert wird (wobei die Injektionssicherheit beibehalten bleibt usw.) - sowohl bei typgebundener als auch bei "dynamischer" Verwendung. Zum Beispiel:

%Vor%

Dies vermeidet auch die Notwendigkeit, mit db-command / parameter / reader herumzuhantieren. Beachten Sie die Klammern "in" ohne , mit denen dieses Muster erkannt wird.

    
Marc Gravell 30.05.2013 17:37
quelle
-2

Sie verwenden Ihre Liste momentan nicht. Wenn Sie es für etwas anderes nicht brauchen, können Sie das einfach tun:

%Vor%

Dies überprüft, ob es in diesen 3 Werten ist.

    
phadaphunk 30.05.2013 17:22
quelle

Tags und Links