Problem beim Einfügen von String oder NULL in die SQL Server-Datenbank

7

Ich habe Probleme mit der richtigen Syntax, um entweder eine Zeichenfolge oder eine NULL an die Datenbank zu übergeben. Hier ist mein Code:

%Vor%

Ich habe einfache Anführungszeichen um die variablen Platzhalter verwendet, damit die Datenbank einen Zeichenfolgenwert richtig akzeptiert. Wenn jedoch NULL übergeben wird, wird es als Zeichenfolge "NULL" in die Datenbank aufgenommen.

Gibt es eine Möglichkeit, die einfachen Anführungszeichen aus der InsertCommand-Zeichenfolge herauszulassen und meine Variablen bedingt mit einfachen Anführungszeichen zu versehen?

    
beardog 17.12.2008, 13:27
quelle

3 Antworten

22

Verketten Sie die Zeichenkette nicht ( string.Format ) - verwenden Sie Parameter ( @p1 etc) - dann können Sie DBNull.Value an NULL zu SQL Server

übergeben %Vor%

Dies schützt Sie auch vor SQL-Injection

    
Marc Gravell 17.12.2008, 13:30
quelle
5

Das Konzentrieren der Zeichenfolge mit String.Format ist möglicherweise ein großes Sicherheitsrisiko (SQL Injection) und problematisch, wenn Sie das Zeichen einfügen möchten.

Lösung:

%Vor%     
Stefan Schultze 17.12.2008 13:32
quelle
2

Im Geiste der Beantwortung der Frage, wie sie gestellt wurde, und der Tatsache, dass das Refactoring des Codes zur Parameterisierung der Abfragen die richtige Lösung ist, könnten Sie eine Funktion schreiben, die entweder eine Zeichenfolge in einfacher Anführungszeichen oder eine nicht-zitierte Zeichenfolge zurückgibt NULL String-Wert, dann entfernen Sie die einfachen Anführungszeichen aus der Abfragezeichenfolge.

%Vor%

Wenn Sie VS 2008 verwenden, können Sie es sogar als eine Erweiterungsmethode implementieren.

%Vor%

Ich werde die ToStringorNull-Funktion für Sie erstellen - es ist nicht schwer: -)

    
rjrapson 17.12.2008 13:51
quelle

Tags und Links