VB.net-检查SQL字段以查看是否设置了位

VB.net-检查SQL字段以查看是否设置了位,sql,vb.net,Sql,Vb.net,我的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

我的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

在这种情况下,您应该升级到存储过程或函数,但下面是一个示例查询

"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。

与您的问题无关,但非常重要-立即阅读。我们会等的。Sql注入是一件非常糟糕的事情。您使用的是哪个版本的Sql Server?如果是2005或更新版本,您可以将“user\u field\u Department\u TR=0”添加到where子句,然后使用OUTPUT子句,如UPDATE。。。设置哪里插入输出。进入记录表。请注意,需要提前定义日志表。为什么不在设置它之前在单独的查询中读取值?-这是SQL 2005-我来试试,Reband先生-安德鲁-如果雷班德先生的想法对我不起作用,我会试试的-我会把整件事都读一遍的,丹。这是一个内部网站…我知道,它仍然可能受到攻击。我的上司就是这样安排的。希望我能做出一些改变。如果
myUserName
碰巧是“John O'Connor”,它将破坏查询,更不用说任何有意的SQL注入尝试了,只是为了指出它目前是多么脆弱。