用“位”来存储、修改用户权限的方法
以前我用记录方式,如A用户有3个模块权限,则A有三条记录
看到别人的程序里有这种方法,感觉不错,给大家看看有没有优点可取。
用户权限用一个int字段表示,可以放32位,
如果有第1,3,4模块的权限则,值为1+4+8=13
userId_____userQx__
A?????????????? |???? 13
|__
增加权限具体实现
如增加第四个模块的权限,4的二进制值8
** update qxUser set userQx = userQx |8 where userId='A' **
删除第四个模块的权限
** update qxUser set userQx = userQx &~8 where userId='A' **
如果删除第四个模块,则不加条件就可以了
** update qxUser set userQx = userQx&~8 **
以上在SqlServer2000企业版通过。
欢迎大家讨论,有更好的方法大家共享呀~~~
在Java 里
**34 &2 ** !=0就行了。