我需要确保从存储过程中获取正确的命名字段,并且我发现的所有示例都是通过索引而不是名称来访问读者对象。如何确保我从存储过程中返回的字段是绝对正确的字段。
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
答案 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总是按名字绑定。为您节省了大量不必要的代码。