0

私の SQL テーブルにはビット フィールドがあり、それが 0 に設定されている場合は 1 に更新する必要があります。すべてのエントリに対してフィールドを設定するコードを記述しましたが、最初にそれがすでに 0 になっているかどうかを確認する必要があるため、何が変更されたかをログに記録できます。

これが私がすでに持っているものです:

Public Function Update_User_to_TR(ByVal strUserName As String) As String

    Dim myUserName As String = strUserName.Trim
    Dim myReturn As String

    Try

        Dim sql As New SQL
        Dim strQuery As String

        strQuery = "Update dbo.USERS set user_field_Department_TR = 1 where USER_NAME = '" & myUserName & "'"
        myReturn = sql.SQLUpdateWT(strQuery)

    Catch ex As Exception
        myReturn = ex.ToString
        MsgBox(myReturn)
    End Try

    Return myReturn

End Function
4

1 に答える 1

0

この場合、ストアド プロシージャまたは関数にアップグレードする必要がありますが、サンプル クエリを次に示します。

"Declare @WillUpdate bit;Set @WillUpdate = 0;" & _
"If Exists(Select user_name from dbo.Users where user_name ='" & myUserName & _
"'        and user_field_department_tr = 0 " & _
"    Begin " & _
"      Update dbo.USERS set user_field_Department_TR = 1 where USER_NAME = '" & myUserName & "';" & _
"    Insert Into MyLog(field1, field2) " & _
"     Values('sampledata', 'field was updated from 0 to 1');" & _
"    End"

ただし、他のコメントを読んで、SQL インジェクションとそれがどのように悪いかを学び、ADO.NET などのパラメーター化されたクエリを使用する方法を学んでください。

于 2013-05-29T02:33:47.627 に答える