网页 - 向SQL表添加数据 - 是,否或null

时间:2015-09-29 19:41:36

标签: sql-server visual-studio-2010 webpage bit-fields

重新设计网页问题 - 我的SQL数据库中有一个名为Approved的字段。此字段对于已批准为true,对于未批准为false。现在,用户希望跟踪被拒绝。因此,它被批准 - 真实,未被批准 - 是假的,或者没有决定 - 无效。

我发现SQL数据库位字段也可以为null。因此,它可以保持值true,false或null。在SQL中,我测试了它,字段可以为null。

我的问题 - 在我的网页上,我在此表中添加了一条记录(甚至没有提到该字段),它会自动进入该字段,因为它是假的。我试图将null添加到该字段,但它仍然作为false进入sql。有没有办法用一个字段来完成这个或者我必须创建一个新字段(请说那是一种方法来做到这一点)?这是我尝试将字段添加为null的代码:

Using connection As New SqlConnection("Data Source=WillSQL\ict2;Initial Catalog=TimeSQL_testing;Integrated Security=SSPI ")

                commandText = "Insert into tblWorkHours(Employee, EmployeeName, DateRequested, WorkCode, BeginDateOff, EndDateOff, AllDay_YesNo, approved, sys_usr, stampaddtime) values (@Employee,@EmployeeName,@DateRequested,@WorkCode,@BeginDateOff,@EndDateOff,@AllDay_YesNo, @approved, @sys_user, @stampaddtime)"

                Dim cmd As New SqlCommand(commandText, connection)

                connection.Open()

                cmd.Parameters.AddWithValue("@Employee", stempid)
                cmd.Parameters.AddWithValue("@EmployeeName", stempname)
                cmd.Parameters.AddWithValue("@DateRequested", stdtreq)
                cmd.Parameters.AddWithValue("@WorkCode", streason)
                cmd.Parameters.AddWithValue("@BeginDateOff", stdtbeg)
                cmd.Parameters.AddWithValue("@EndDateOff", stdtend)
                cmd.Parameters.AddWithValue("@AllDay_YesNo", stallday)
                cmd.Parameters.AddWithValue("@approved", vbNull)
                cmd.Parameters.AddWithValue("@sys_user", vname)
                cmd.Parameters.AddWithValue("@stampaddtime", dt)

                cmd.ExecuteNonQuery()

                connection.Close()
            End Using

谢谢!

1 个答案:

答案 0 :(得分:1)

要从.net将数据库值设置为NULL,您需要使用dbnull.value:

所以改变这个:

cmd.Parameters.AddWithValue("@approved", vbNull)

对此:

cmd.Parameters.AddWithValue("@approved", DbNull.Value)