1

データ型がビットのチェックボックスをオンにすると、その値、つまり1または0がデータベースに保存されていないため、エラーが発生します。

varchar値'System.Web.UI.WebControls.CheckBox'をデータ型ビットに変換するときに変換に失敗しました

if (CheckBoxDT.Checked) 
{ 
    cmd.CommandText = " Insert into ClientMaster(doTips) values ( 1 )";    
    cmd.Parameters.AddWithValue("doTips", bool.Parse("1")); 
    cmd.ExecuteNonQuery(); 
} 
else 
{ 
    cmd.CommandText = "insert into ClientMaster(doTips) values (0)";
    cmd.Parameters.AddWithValue("doTips", bool.Parse("0")); 
    cmd.ExecuteNonQuery(); 
} 
4

3 に答える 3

3

データベースへのビット値の挿入

  cmd.Parameters.Add("@check", SqlDbType.Bit).Value = Convert.ToInt16(CheckBoxDT.Checked);

選択したチェックボックスを取得する これを試してください

<asp:CheckBox ID="CheckBoxDT" runat="server" Checked='<%#((bool)Eval("isActive"))%>'
                        Style="color: #FFFFFF" />

ここに画像の説明を入力

あなたのコード

if (CheckBoxDT.Checked) 
{ 
cmd.CommandText = " Insert into ClientMaster(doTips) values ( 1 )";    
cmd.Parameters.AddWithValue("doTips", bool.Parse("1")); 
cmd.ExecuteNonQuery(); 
} 
else 
{ 
cmd.CommandText = "insert into ClientMaster(doTips) values (0)"; 
cmd.Parameters.AddWithValue("doTips", bool.Parse("0")); 
cmd.ExecuteNonQuery(); 
}

これを

cmd.CommandText = "insert into ClientMaster(doTips) values (@doTips)"; 
cmd.Parameters.Add("@doTips", SqlDbType.Bit).Value = Convert.ToInt16(CheckBoxDT.Checked)
cmd.ExecuteNonQuery(); 
于 2013-02-18T08:43:00.037 に答える
1

状態の値ではなく、コントロールを渡している可能性があります。状態を渡し、必要に応じて明示的に変換する必要があります。

CheckBox         // a web control, and no standard db type to represent it
CheckBox.Checked // a boolean value, generally translatable to db bit
于 2013-02-18T08:23:48.047 に答える
0

ほとんどの場合、データベースの状態ではなく、実際のコントロールをデータベースに渡しています。myCheckBox.Checkedだけでなく、を使用する必要がありますmyCheckBox

于 2013-02-18T08:25:00.520 に答える