SQL 服务器:将 vb 网络中的参数布尔值添加到 sql 中作为位
SQL Server : add parameter boolean from vb net into sql as bit
我有一个 SQL 服务器数据库,其中有一个名为 tblFeatures
的 table,有 2 列 Feature
(Nvarchar(50)
) 和 Setting
( bit
)。我正在尝试通过 VB NET 中的复选框为每个 Feature
设置此 Setting
的值。我试过使用 True/False 0/1 但没有成功使用 SQL 参数。我可以使用正常的 SQL 更新命令来做到这一点:
"UPDATE tblSettings SET [Setting]='" & True & "' WHERE Feature='FSCreateTicket'"
但是,我想使用 SQL 参数以 proper/safe 的方式进行。我搜索了 Stack,Google 结果没有找到完成这项工作的正确方法。我要么收到错误,要么没有错误但值没有更新。
这是我目前正在尝试的:
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()
我遇到错误
Conversion failed when converting the varchar value '@setting' to data type bit
我不明白为什么它说 varchar
当发送的变量是布尔值并且我已将 SqlDbType
声明为 bit
.
我也尝试过使用 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,即更改
...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting='@setting' WHERE Feature='@feature'"
...
至:
...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting=@setting WHERE Feature=@feature"
...
使用参数化查询时,如果需要,将放置引号,您不必手动执行,也不应该。
我有一个 SQL 服务器数据库,其中有一个名为 tblFeatures
的 table,有 2 列 Feature
(Nvarchar(50)
) 和 Setting
( bit
)。我正在尝试通过 VB NET 中的复选框为每个 Feature
设置此 Setting
的值。我试过使用 True/False 0/1 但没有成功使用 SQL 参数。我可以使用正常的 SQL 更新命令来做到这一点:
"UPDATE tblSettings SET [Setting]='" & True & "' WHERE Feature='FSCreateTicket'"
但是,我想使用 SQL 参数以 proper/safe 的方式进行。我搜索了 Stack,Google 结果没有找到完成这项工作的正确方法。我要么收到错误,要么没有错误但值没有更新。
这是我目前正在尝试的:
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()
我遇到错误
Conversion failed when converting the varchar value '@setting' to data type bit
我不明白为什么它说 varchar
当发送的变量是布尔值并且我已将 SqlDbType
声明为 bit
.
我也尝试过使用 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,即更改
...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting='@setting' WHERE Feature='@feature'"
...
至:
...
sqlcmd.CommandText = "UPDATE tblSettings SET Setting=@setting WHERE Feature=@feature"
...
使用参数化查询时,如果需要,将放置引号,您不必手动执行,也不应该。