C# 在SQL Server的单个二进制字段中插入多个值

C# 在SQL Server的单个二进制字段中插入多个值,c#,sql,sql-server-2008,C#,Sql,Sql Server 2008,我遇到了一个问题,我需要在数据库中为学生出勤的每小时插入位值(真/假)。每小时应有一个值(真/假) 直截了当的选项是每次有学生在场时,创建24列并为每个列输入值。但这肯定也是最糟糕的一次 有人建议我使用二进制字段,一个字段可以包含所有这些值 实际上,mu gui有24个复选框,无论选中哪个复选框,其值都应存储为1,以便下次我打开screem时,这些复选框应保持选中状态 如果有帮助的话,我正在使用sql server 2008和.net framework 4.0 谢谢没有必要弄乱[var]二进制

我遇到了一个问题,我需要在数据库中为学生出勤的每小时插入位值(真/假)。每小时应有一个值(真/假)

直截了当的选项是每次有学生在场时,创建24列并为每个列输入值。但这肯定也是最糟糕的一次

有人建议我使用二进制字段,一个字段可以包含所有这些值

实际上,mu gui有24个复选框,无论选中哪个复选框,其值都应存储为1,以便下次我打开screem时,这些复选框应保持选中状态

如果有帮助的话,我正在使用sql server 2008和.net framework 4.0


谢谢

没有必要弄乱
[var]二进制(n)
。因为您只需要24位,所以存储一个常规的、不可为空的
int
。然后只需对代码进行位运算,即移位(
)运算符和按位组合(
&
|
,可能还有一些
~
)。没有其他需要。因此,如果我们确定LSB是00:00,从右向左工作,那么在03:00和14:00-16:00(含)出现的人的值为

(1 << 3) | (1 << 14) | (1 << 15) | (1 << 16) ==> 114696

(1您可以使用该类来操作int(和其他类型)的各个位。这可能会使您更容易使用二进制选项,但我认为将所有值存储在数据库中并不一定是一个坏选项。。为什么您认为这是一个如此坏的选项?

我没有尝试过任何东西,因为我不知道此二进制数据类型如何工作,请指导我在rght方向。然后签出这些值并创建一个nd,然后带着具体问题回来…请检查这些