2014-08-27 3 views
1

SQL Server 데이터베이스에서 수천 명의 사람들을 위해 효율적으로 부울 값을 저장하고 액세스하려고합니다 ('가용성'을 나타 내기 위해). 그들은 그들이 사용할 수 없을 때를위한 날짜를 알려줄 것이고, 나는 그들을 대표 할 필요가 있고 계획에 따라 프로그램으로 처리해야한다.C# SQL Server 배열 액세스 혼동

즉, 나는 각 개인의 연중 가용성을 추적 할 수 있어야합니다 (간단한 예/아니오 또는 참/거짓으로 충분합니다).

Bitvector32 구조를 발견하고 멋지게 작동하도록했습니다 (배경에 대한 링크 : How do I convert a SQL Server 'Int' field to 'BitVector32' within my C# program? 참조). 내가 그것을 만들 수있어 내 DB에 정수로 쓰고, 다시 C# 프로그램으로 복구 할 수있다.

문제는 SQL을 통해이 구조체 내에 포함 된 부울 값에 액세스 할 수 있기를 원하지만이를 수행 할 수 없습니다.

내 다음 옵션은 내가 필요로하는 지정된 날짜에 대해서만 부울 값의 배열을 생성하고 (24 번 발생) 각 SQL Server 테이블에이 개체를 저장하여 각 사용자의 Y/N을 저장합니다. 그러나 이것에 익숙하지 않은 나는 SQL Server가 배열을 처리하지 않는다는 소식을 듣고 있습니다. 유일한 옵션은 SQL Server에서 24 개의 고유 한 '비트'필드를 정의하고이를 C# 부울 배열에서로드하는 것입니다. 이것은 추한 것 같습니다.

더 나은 해결책을 찾거나 가까운 사람이 있습니까?

답변

0

SQL Server는 비트 연산자를 지원합니다. Bitvector32은 일반적인 비트 연산 "트릭"을 사용하여 비트에 액세스합니다. bits & 1은 예를 들어 비트 0을 제공합니다. bits | 1은 비트 0을 설정합니다.

+1

이것은 훌륭하게 작동했습니다. 비트 연산자에 대해서는 아무 것도 몰랐고 완벽한 솔루션을 찾는 데 약간의 시간을 투자했습니다. usr 감사합니다! –