SQL-SERVER如何实现只能查自己的信息

比如说一个成绩管理系统,一个表里面有所有学生成绩,但要实现这个学生只能查询自己的成绩,而不能查询他人的成绩(也就是实现权限控制,而不是进行某次具体的查询)

sql

8个回答

简单给个思路,用户表设置一个字段,标识老师或者是学生身份,登录以后获取身份认证;
如果是学生,直接用楼上的那些简单查询,where userid=‘登录用户id’
如果是老师,则根据老师和学生的关系下查询出老师所属的所有学生,
这是个简单的处理方法
如果想要实现复杂的权限控制,那就要设计权限角色用户关系了

select * from table where username = 当前用户

ojQuery1
奔跑的面包 好厉害,加油
2 年多之前 回复
qq_30311119
摆渡无痕 回复nigream: 简单的权限控制,新增登陆信息表,在登陆时插入信息,登陆状态为true;添加查询前事件,用户点击查询,查询当前登陆状态为true的用户作为当前查询条件传入查询方法,剩下的你应该知道了;如果系统允许多人同时登陆,则加入ip信息
2 年多之前 回复
qq_32173653
Abscene 回复nigream: 1L是对的,用WHERE限制你的用户,把这个用户设置成这个学生就行了
2 年多之前 回复
nigream
nigream 可能你没理解我的意思,比如说一个成绩管理系统,一个表里面有所有学生成绩,但要实现这个学生只能查询自己的成绩,而不能查询他人的成绩
2 年多之前 回复

select 成绩 from 表 where 姓名='狗蛋';

首先。。你这是一个系统,有应用层的权限管理逻辑,数据库底层层面只能实现数据查询。数据库本身不好管理权限,用户登录信息都在前台应用信息中,在前台做权限控制就可以了,后台能查什么都是前端告知的,换句话说,select * from t where name=张三,这个语句本身就是控制只能查某人数据的控制了

1楼是没问题啊,登录用户只能查询自己的,可以做到的

你说的意思就是1L的意思,你的意思应该是某位学生登陆后只能看到自己成绩信息
其实在数据库处理的就是select 成绩 from 成绩表 where user = 该学生

单个学生条件查询,select * from 成绩表名 where 学生名列名=“学生名字”

我觉得题主是想控制权限吧,而不是做某一个用的查询。

nigream
nigream 对的,就是这个意思
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问