网页 - 添加数据到 SQL table - 是、否或空
Webpage - Adding data to SQL table - Yes, no, or null
重新设计网页问题 - 我的 SQL 数据库中有一个名为 Approved 的字段。此字段为 true 表示已批准,或为 false 表示未批准。现在,用户想跟踪被拒绝了。因此,已批准 - true,未批准 - false,或未决定 -null。
我发现SQL数据库位域也可以为空。因此,它可以保持值 true、false 或 null。在SQL,我测试了一下,字段可以为null。
我的问题 - 在我的网页上,我向此 table 添加了一条记录(甚至没有提及该字段)并且它自动输入该字段,因为它是错误的。我试图将 null 添加到该字段,但它仍然进入 sql 为 false。有没有办法用位字段来做到这一点,或者我必须创建一个新字段(请说有办法做到这一点)?这是我尝试将字段添加为空的代码:
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
谢谢!
要从 .net 将数据库值设置为 NULL,您需要使用 dbnull.value:
所以改变这个:
cmd.Parameters.AddWithValue("@approved", vbNull)
为此:
cmd.Parameters.AddWithValue("@approved", DbNull.Value)
重新设计网页问题 - 我的 SQL 数据库中有一个名为 Approved 的字段。此字段为 true 表示已批准,或为 false 表示未批准。现在,用户想跟踪被拒绝了。因此,已批准 - true,未批准 - false,或未决定 -null。
我发现SQL数据库位域也可以为空。因此,它可以保持值 true、false 或 null。在SQL,我测试了一下,字段可以为null。
我的问题 - 在我的网页上,我向此 table 添加了一条记录(甚至没有提及该字段)并且它自动输入该字段,因为它是错误的。我试图将 null 添加到该字段,但它仍然进入 sql 为 false。有没有办法用位字段来做到这一点,或者我必须创建一个新字段(请说有办法做到这一点)?这是我尝试将字段添加为空的代码:
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
谢谢!
要从 .net 将数据库值设置为 NULL,您需要使用 dbnull.value:
所以改变这个:
cmd.Parameters.AddWithValue("@approved", vbNull)
为此:
cmd.Parameters.AddWithValue("@approved", DbNull.Value)