SQL Server:将vb net中的参数布尔值作为位添加到SQL中
我有一个SQL Server数据库,其中有一个名为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
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"
...