Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays SQL Server二进制文件(n)作为byte()返回VB.NET-如何在不指定数组大小的情况下转换为Int?_Arrays_Sql Server_Vb.net_Bitwise Operators - Fatal编程技术网

Arrays SQL Server二进制文件(n)作为byte()返回VB.NET-如何在不指定数组大小的情况下转换为Int?

Arrays SQL Server二进制文件(n)作为byte()返回VB.NET-如何在不指定数组大小的情况下转换为Int?,arrays,sql-server,vb.net,bitwise-operators,Arrays,Sql Server,Vb.net,Bitwise Operators,我在SQL Server中将一个标志存储为二进制(n)(当前n=2,但将来可能会增长)。我使用它按位执行操作,并检查它在SQL Server和VB.NET中是否包含特定值 这些标志存储在VB代码的枚举中: Enum LocState Collection = 4096 Sortable = 8192 Synced = 16384 Unsynced = 1 Or Sortable Or Collection ForSale = 2 Or Synced Or

我在SQL Server中将一个标志存储为
二进制(n)
(当前n=2,但将来可能会增长)。我使用它按位执行操作,并检查它在SQL Server和VB.NET中是否包含特定值

这些标志存储在VB代码的枚举中:

Enum LocState
    Collection = 4096
    Sortable = 8192
    Synced = 16384
    Unsynced = 1 Or Sortable Or Collection
    ForSale = 2 Or Synced Or Sortable Or Collection
    Stockroom = 4 Or Synced Or Sortable
    ...
End Enum
我可以使用插值字符串在T-SQL中执行比较:

$"SELECT * FROM Inventory_Locations WHERE State & {LocState.Synced:D}>0;"
但是当我需要将值(状态)返回到VB时,它会以字节数组的形式返回,我无法对其执行位运算符

dim locRecord as DataTable=GetTable("SELECT State from Inventory_Locations;")
dim isStock = locRecord("State") & LocState.Stockroom > 0  'Returns error
我看到首选的方法是使用
位转换器
,但看起来必须根据字节数组的大小使用不同的方法(同时
字节()
返回Big-endian,VB.NET将其计算为little-endian)


是否有函数将大小不确定的字节数组转换为整数?或者使用另一种可以进行位比较的格式?还是最好编写一个helper函数来捕捉它们,反转它们,检查大小,并应用正确的
位转换器
方法?

不回答我知道的问题,但这些确实让我觉得你在发明自己的问题。在数据库中为LocState创建一个表,然后使用FK关系,而不是尝试使用enum四处转悠,这不会让事情变得更容易吗?这很好。我不会使用FK关系,因为我希望能够在同步、可排序或库存上进行筛选,并让它们都返回库存值。位运算符使我能够灵活地拥有这些类别,而无需将它们锁定到字段中。我还选择了枚举,因为我需要从SQL和代码(组合框等)访问这些值,我认为这可能是最简单的。我可能错了:)如果您存储的是两个字节,那么为什么不首先使用
smallint
?如果您的
Enum
类型为
Integer
,这是默认值,那么为什么不在数据库中使用
int
?你真的需要在这里和那里节省和搜寻一些字节吗?@jmcillhinney这是一个很好的现实检查。保持我的程序很小只是一种习惯,但你是对的,将它存储为int只需很少的代价就可以解决我的问题cost@Scott您可能对Enum的功能感兴趣。