2016-04-18 12 views
0

単純な挿入またはSQL Serverへの更新は、空白ではなくNULLとして実行しようとしています。私はフィールド= NULLを引用符なしで設定するために多くの参照をオンラインで見てきましたが、NULLではなく空のままになっています。信じられないほどイライラする。Classic ASPからNULL値をSQL Serverに挿入

これは古典的なaspです。

If Request.Form("Field") = "" or IsNull(Request.Form("Field")) then 
    Field = NULL 
Else 
    Field = Request.Form("Field") 
End If 

sSql="UPDATE [table] SET timestamp = {fn NOW()}," &_ 
    "Field = '" & Field & "'," &_ 
    "WHERE [System] = '" & System & "' and Active = '1'" 

私はこれを行う場合、それは私がこれを試してみました。1.

If Request.Form("Field") = "" or IsNull(Request.Form("Field")) then 
    Field = 1 
Else 
    Field = Request.Form("Field") 
End If 

sSql="UPDATE [table] SET timestamp = {fn NOW()}," &_ 
"Field = '" & Field & "'," &_ 
"WHERE [System] = '" & System & "' and Active = '1'" 

に置きますが、エラー500を得るために、それがチェックされていることを証明している:

sSql="UPDATE [Table] SET timestamp = {fn NOW()}, Field = " 
If IsNull(Field) Then 
    sSQL = sSQL & "NULL" 
Else 
    sSQL = sSQL & "'" & Field & "'" &_ 
End If 
"NTLogon = '" & UCase(NTLogon) & "'" &_ 
"WHERE [System] = '" & System & "' and Active = '1'" 

Iを私の元のコードの代わりにこれを試してください: フィールド割り当て:

SSQL:

"Field = " & Field & "," &_ 

私は、 "URLを処理するときにエラーがサーバー上で発生しました。" 取得

+1

他に何かをする前に、パラメータ化されたクエリについて理解し、理解し、使用を開始する必要があります。これは、SQLインジェクションの教科書の例です。 –

+0

あなたのテーブルのデフォルト値が空でないことを確認してください。 'Field =" NULL "'と 'Field =" '"&Request.Form(" Field ")&"' "' SQLを '' Field = "&Field&"、 "&_'に変更すると、パラメータ化されたクエリを使用して、すべてを再度変更する必要があります。 – JamieD77

答えて

1

だから、パラメータ化されたクエリを使用することについてここで盛り込まれています。だから、誰のシステムからも外れています。

問題はこれです:

"Field = '" & Field & "'" 

これらのアンパサンドは、すぐに戻って文字列にあなたの愛情を込めて、人口のVBScript NULL値を変換しています。それが起こらないようにするには、IsNullケースを明示的に処理する必要があります。あなたはパラメータ化クエリを経由してこれを行う場合でも、あなたは"" & NULL = ""ので、文字列の上にあなたのVBScript NULL値を付加していないことを確認する必要があります

sSQL = "UPDATE [table] SET timestamp = {fn NOW()}, Field = " 
If IsNull(Field) Then 
    sSQL = sSQL & "NULL" 
Else 
    sSQL = sSQL & "'" & Field & "'" 
End If 
sSQL = sSQL & " WHERE [System] = '" & System & "' AND Active = '1'" 

注意。

関連する問題