Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:将vb net中的参数布尔值作为位添加到SQL中_Sql_Boolean_Sqlparameter - Fatal编程技术网

SQL Server:将vb net中的参数布尔值作为位添加到SQL中

SQL Server:将vb net中的参数布尔值作为位添加到SQL中,sql,boolean,sqlparameter,Sql,Boolean,Sqlparameter,我有一个SQL Server数据库,其中有一个名为tblFeatures的表,有两列Feature(Nvarchar(50))和Setting(bit)。我试图通过VB NET中的复选框为每个功能设置设置的值。我曾尝试使用True/False 0/1,但使用SQL参数时运气不佳。我可以使用普通的SQL Update命令来完成这项工作: "UPDATE tblSettings SET [Setting]='" & True & "' WHERE Feature='FSCreateT

我有一个SQL Server数据库,其中有一个名为
tblFeatures
的表,有两列
Feature
Nvarchar(50)
)和
Setting
bit
)。我试图通过VB NET中的复选框为每个
功能设置
设置的值。我曾尝试使用True/False 0/1,但使用SQL参数时运气不佳。我可以使用普通的SQL Update命令来完成这项工作:

"UPDATE tblSettings SET [Setting]='" & True & "' WHERE Feature='FSCreateTicket'"
但是,我希望使用SQL参数以正确/安全的方式执行此操作。我已经搜索了这个堆栈,谷歌搜索结果并没有找到正确的方法来完成这个任务。我要么得到一个错误,要么没有错误,但该值没有得到更新

以下是我目前正在尝试的:

Public Function ChangeSetting(ByVal strFeature As String, ByVal bSetting As Boolean)
    Dim sqlcmd As New SqlCommand
    Try
        MYSQL.Open()
        sqlcmd.Connection = MYSQL
        sqlcmd.CommandText = "UPDATE tblSettings SET Setting='@setting' WHERE Feature='@feature'"
        sqlcmd.Parameters.Add("@setting", SqlDbType.Bit).Value = bSetting
        sqlcmd.Parameters.Add("@feature", SqlDbType.NVarChar, 50).Value = strFeature
        sqlcmd.ExecuteNonQuery()
我发现了错误

将varchar值“@setting”转换为数据类型位时,转换失败

我不明白当发送的变量是布尔值且我已将
SqlDbType
声明为
bit
时,为什么会显示
varchar

我还尝试过使用
AddwithValue
参数,但运气不好

Public Function ChangeSetting(ByVal strFeature As String, ByVal bSetting As Boolean)
    Dim sqlcmd As New SqlCommand
    Try
        MYSQL.Open()
        sqlcmd.Connection = MYSQL
        sqlcmd.CommandText = "UPDATE tblSettings SET Setting='@setting' WHERE Feature='@feature'"
        sqlcmd.Parameters.AddWithValue("@setting", bSetting)
        sqlcmd.Parameters.Add("@feature", SqlDbType.NVarChar, 50).Value = strFeature
        sqlcmd.ExecuteNonQuery()

这不会产生错误,但不会更新值。请帮忙

删除查询文本中参数周围的单引号a,即change

...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting='@setting' WHERE Feature='@feature'"
...
致:

当使用参数化查询时,如果需要,将放置引号。您不必手动执行,也不应该手动执行

...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting=@setting WHERE Feature=@feature"
...