代码之家  ›  专栏  ›  技术社区  ›  oshirowanen

复选框的值为0和-1?

  •  0
  • oshirowanen  · 技术社区  · 12 年前

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

    当复选框未选中时,我得到 0 的在数据库中。然而,当他们 选中的 ,我明白 -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
    
    3 回复  |  直到 12 年前
        1
  •  3
  •   David M    12 年前

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


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

        2
  •  1
  •   Community Mohan Dere    8 年前

    在.NET中,这些值可能是true和false,但数据库可能会以不同的方式表示这些值。例如, Access uses -1 as a "true" value.

        3
  •  0
  •   KaZzA    12 年前

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

        Sql = CheckBoolean(Checkbox.checked)
    Function CheckBoolean(Value As Boolean)
        If Value Then Return "-1"
        Return "0"
    End Function