0

Webアプリにいくつかのチェックボックスと保存ボタンがあります。保存ボタンをクリックするcheckedと、チェックボックスの状態がデータベースに保存されます。

チェックボックスがチェックされていない場合、0データベースに'sが表示されます。ただし、それらがである場合、データベースに'scheckedを取得します。-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ではtrueとfalseの値になりますが、データベースはこれらの値を異なる方法で表す場合があります。たとえば、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 に答える