使用SqlDataReader从连接表中获取值

Ead*_*del 3 .net c# sql-server ado.net sqldatareader

想象一下,我们在数据库中有两个表user(FK id_role)和role(PK角色).我们需要阅读有关用户及其权限的信息.

我使用以下SQL语句来执行查询:

SELECT * 
FROM [user] 
INNER JOIN role ON [user].id_role = role.id 
WHERE login = @login
Run Code Online (Sandbox Code Playgroud)

执行后,我尝试使用字符串索引器读取读取器中的值:reader[string name].

这是我需要解决的问题是重复的名字:既userrole包含,例如现场id,对此我能够读取用户(使用reader["id"]),但无法读取角色(使用reader["role.id"]).

该属性FieldCount返回12,这意味着读取了所有必填字段(user包含6个字段,也是如此role).

在这种情况下,我是否有可能按名称读取列?或者以唯一的方式使用两个查询或SQL'作为'运算符?

McG*_*gle 11

您始终可以明确选择列并将其别名:

SELECT user.id AS user_id, user.*, role.id AS role_id, role.* 
FROM [user] 
INNER JOIN role ON [user].id_role = role.id 
WHERE login = @login
Run Code Online (Sandbox Code Playgroud)

然后用reader["user_id"]和选择它们reader["role_id"].