当我检查其数据类型为bit的复选框时,其值(即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();
}
答案 0 :(得分: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();
答案 1 :(得分:1)
你有可能通过控制,而不是其状态的价值;你应该传递状态,并在必要时明确转换它:
CheckBox // a web control, and no standard db type to represent it
CheckBox.Checked // a boolean value, generally translatable to db bit
答案 2 :(得分:0)
您很可能将实际控件传递给数据库而不是它的状态。您需要使用myCheckBox.Checked
而不是myCheckBox
。