如何从前端将位值存储到sql server DB中?

时间:2014-09-02 18:36:25

标签: sql-server-2008

我的表中有一个可以存储0或1的字段。

在我的网页中,我声明了

<label>Do we have your permission to send your cell a text</label>
<div>
  <label>
  <input type="radio" name="ctrluuSendSMS" id="ctrluuSendSMS" value="1">Yes</label>
</div>
<div>
  <label>
  <input type="radio" name="ctrluuSendSMS" id="ctrluuSendSMS" value="0">No</label>
</div>

当我提交表单时,我收到以下错误:

String was not recognized as a valid Boolean

请帮我说明如何声明以及如何存储到DB

2 个答案:

答案 0 :(得分:0)

我相信您应该尝试将位值作为int传递给数据库,而不是字符串(在代码中转换然后作为整数参数传递给StoredProc / ORM)。

(正如alroc评论的那样,我们可以看到sql代码吗?)

我假设你的桌子看起来像

Create Table MyTable
(
 SomePK int not null identity(1,1),
 MyBitValue bit
)

所以你的插入/更新语句看起来像

Declare @MyParam int = 1 -- where 1(or 0) is an integer, not a string
Declare @MyParam2 bit = 1 
Insert Into MyTable(MyBitValue)Values(@MyParam)
Insert Into MyTable(MyBitValue)Values(@MyParam2)

Select * From MyTable

Set @MyParam = 0
Set @MyParam2 = 0
Update MyTable Set MyBitValue = @MyParam Where SomePK = 1
Update MyTable Set MyBitValue = @MyParam2 Where SomePK = 2

Select * from MyTable

修改:我已经更新了我的示例以显示同时使用int和位

答案 1 :(得分:0)

使用“True”和“False”而不是“1”和“0”作为Input元素的值属性。

<label>Do we have your permission to send your cell a text</label>
<div>
  <label>
  <input type="radio" name="ctrluuSendSMS" id="ctrluuSendSMS" value="True">Yes</label>
</div>
<div>
  <label>
  <input type="radio" name="ctrluuSendSMS" id="ctrluuSendSMS" value="False">No</label>
</div>

数字字符串在转换为布尔值

之前必须转换为数值
Convert.ToBoolean(Convert.ToByte("1")) = True

但“True”和“False”会直接转换。

Convert.ToBoolean("True") = True

http://msdn.microsoft.com/en-us/library/wh2c31dd(v=vs.110).aspx