如何在C#中按名称从存储过程访问返回的字段

时间:2014-10-15 14:33:23

标签: .net vb.net stored-procedures

我需要确保从存储过程中获取正确的命名字段,并且我发现的所有示例都是通过索引而不是名称来访问读者对象。如何确保我从存储过程中返回的字段是绝对正确的字段。

          rdrLogon = myCommand.ExecuteReader()

        If rdrLogon.HasRows Then
            While rdrLogon.Read()
                'userID
                If rdrLogon(0) Is DBNull.Value Then
                    userID = "NULL"
                Else
                    userID = Convert.ToString(rdrLogon(0))
                End If

而不是rdrLogon(0)或(1)我想使用名字?我被告知要使用ExecuteScalar,但我找不到引用字段名称的适当示例。 提前致谢。

这是对经典asp的转换,他们是如何做到的:            If Not RS_UserAdd.BOF or Not RS_UserAdd.EOF then rspCk=(RS_UserAdd.Fields.Item("userCk").Value) End If

1 个答案:

答案 0 :(得分:2)

选项(在此处使用C#语法):

userID = rdrLogon["UserID"];

int colIndex = rdrLogon.GetOrdinal("UserID");
...
userID = rdrLogon.GetString(colIndex);

就个人而言,我只是通过“dapper”绑定:

var users = connection.Query<User>(
    "procName", args, commandType.StoredProcedure).ToList();

dapper总是按名字绑定。为您节省了大量不必要的代码。