2009-07-14 33 views
-1

我有一个包含8列的数据库表。其中一列称为IsAdmin(其数据类型为位)。当且仅当登录用户是管理员时,我必须在网格视图中显示用户列表。正在获取数据

我该怎么做?哪一个条款用于此?

+0

你必须向用户显示的** ** IsAdmin列仅如果他是管理员或只有当他是管理员的所有记录? – TheVillageIdiot 2009-07-14 11:59:25

回答

2

不完全确定我的理解正确。您想要显示的“用户列表”也是您正在选择的表格吗?我的理解是,这是你所需要的:

if exists (
    select * 
    from MyUserList 
    where IsAdmin = 1 
    and UserName = SUSER_NAME() 
) 
begin 
    select * 
    from MyUserList /* Or whatever you need to do if the user is admin */ 
end 
else 
begin 
/* Do whatever you need to do if the user is not an admin */ 
end 
0

我可能会建议这是在应用程序中而不是在SQL中完成的。让应用程序检查谁是管理员,并将其放入会话或cookie中,并在页面加载时检查会话/ cookie以确保用户是管理员,并且他们是否显示信息。

如果你想在SQL中使用它,你应该提供一些额外的信息,如表结构和表名。

马特

1

对我来说,听起来并不像你需要的条款,但应该由业务逻辑应用程序进行处理。

例如如果您只想显示列表,如果登录用户是管理员,那么如果用户不是管理员,那么运行查询就毫无意义 - 这是不必要的数据库往返。

相反,在你的应用程序只是有一些逻辑,说:“如果登录用户是管理员的填充网格视图,否则不执行”

0

的解决方案是太简单了,因为你需要选择

select * from [UserList] where IsAdmin = @UserRole and UserID = @UserID 

在这种情况下,你会选择相关与这个用户ID和他的角色数据:如果用户是管理员的角色,否则另一个数据也可以选择或没有,所以做下面的代码的具体数据。

希望根据我对问题的理解,这是有帮助的。