0

我的网络应用程序上有一些复选框,还有一个保存按钮。当我单击保存按钮时,我将checked复选框的状态保存到数据库中。

当未选中复选框时,我0在数据库中得到 '。但是,当它们是 时checked,我会-1在数据库中获取 '。我期待1的。-1检查状态是否正常?

示例代码:

Function ProcessAction(ByVal checkbox1 As Integer, ByVal checkbox2 As Integer) As Integer

    connection = New SqlConnection(ConfigurationSettings.AppSettings("connString"))

    command = New SqlCommand("stored_procedure_name_here", connection)
    command.CommandType = CommandType.StoredProcedure

    command.Parameters.Add(New SqlParameter("@id", SqlDbType.Int, 4)).Value = 100
    command.Parameters.Add(New SqlParameter("@checkbox1", SqlDbType.Int, 4)).Value = checkbox1
    command.Parameters.Add(New SqlParameter("@checkbox2", SqlDbType.Int, 4)).Value = checkbox2

    command.Connection.Open()
    command.ExecuteNonQuery()
    command.Connection.Close()

    Return 1
End Function

来电:

Sub ButtonClick(ByVal Source As Object, ByVal E As EventArgs)
    ProcessAction(checkbox1.Checked, checkbox2.Checked)
End Sub
4

3 回答 3

3

很大程度上取决于两者之间的代码,但布尔真值通常表示为整数值 -1。这完全取决于您在值被持久化之前如何处理它。如果您需要进一步的帮助,一些代码会很有用。


编辑:添加的代码显示您依赖于从布尔到整数的隐式转换,导致这个 -1 值。在 VB 中,根据版本,您可以使用Iif(checkbox1.Checked, 1, 0)If(checkbox1.Checked, 1, 0)。或者,将值保留为布尔值,并保存到适当的底层 DBMS 数据类型(如果有) - 例如,在 SQL Server 中,这将是一种bit数据类型。

于 2013-03-13T13:29:34.377 回答
1

在 .NET 中这些值是真值和假值,但数据库可能以不同方式表示这些值。例如,Access 使用 -1 作为“真”值。

于 2013-03-13T13:36:36.180 回答
0

我认为你需要使用如下代码

    Sql = CheckBoolean(Checkbox.checked)
Function CheckBoolean(Value As Boolean)
    If Value Then Return "-1"
    Return "0"
End Function
于 2013-03-13T15:01:10.840 回答