Umgang mit leeren Werten mit ADO.NET und AddWithValue()

Habe ich eine Kontrolle, dass bei postback, speichert die Formular-Ergebnisse zurück in die Datenbank. Es füllt die Werte gespeichert werden können, Durchlaufen die querystring. So, für die folgende SQL-Anweisung (stark vereinfacht aus Gründen der Diskussion)...

UPDATE MyTable
SET MyVal1 = @val1,
    MyVal2 = @val2
WHERE @id = @id

...es würde radeln Sie durch die querystring-Tasten wie folgt:

For Each Key As String In Request.QueryString.Keys
    Command.Parameters.AddWithValue("@" & Key, Request.QueryString(Key))
Next

ABER ich bin jetzt in einer situation, wo unter Umständen einige dieser Variablen können nicht in den querystring. Wenn ich nicht bestehen entlang Wert2 in den querystring bekomme ich einen Fehler: System.Data.SqlClient.SqlException: Must declare the scalar value "@val2".

Versuche zu erkennen, wird der fehlende Wert in der SQL-Anweisung...

IF @val2 IS NOT NULL
UPDATE MyTable
SET MyVal1 = @val1,
    MyVal2 = @val2
WHERE @id = @id

... fehlgeschlagen.

Was ist die beste Art und Weise zu attackieren? Muss ich Parsen der SQL-block mit RegEx, Scannen für Namen von Variablen, die nicht im querystring? Oder gibt es eine elegantere Art und Weise zu nähern?

UPDATE: Erkennung von null-Werten in den VB codebehind-Niederlagen der Zweck der Entkopplung der code aus dem Kontext. Ich möchte lieber nicht Wurf, meine Funktion mit Bedingungen für jede denkbare variable, die übergeben werden können, oder nicht bestanden.

InformationsquelleAutor dansays | 2008-09-15
Schreibe einen Kommentar