存储过程
public List<User>All(ActivityMode a)
{
SqlConnection con = ConnectionDAL.SQL();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Sp_User";
cmd.Parameters.AddWithValue("@activity", a.ToString());
List<User> lst = null;
con.Open();
using (con)
{
SqlDataReader DR = cmd.ExecuteReader();
if (DR.HasRows)
{
lst = new List<User>();
while (DR.Read())
{
User obj = new User();
obj.Id = Convert.ToInt32(DR["Id"]);
obj.FullName = DR["FullName"].ToString();
obj.Email = DR["Email"].ToString();
obj.Password = DR["Password"].ToString();
obj.Address = DR["Address"].ToString();
obj.Imgurl = DR["Imgurl"].ToString();
lst.Add(obj);
}
}
}
return lst;
}
用户DAL中的
public ActionResult ViewAllUser()
{
RegisterHandler th = new RegisterHandler();
List<User> lst = new List<User>();
lst = th.All();
return View(lst);
}
在Conrloar
Line 90: {
Line 91: User obj = new User();
Line 92: obj.Id = Convert.ToInt32(DR["ID"]);
Line 93: obj.FullName = DR["FullName"].ToString();
Line 94: obj.Email = DR["Email"].ToString();
我想只显示最后一条记录。
我正在运行该项目并收到此错误。
&#39; /&#39;中的服务器错误应用
ID
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.IndexOutOfRangeException:ID
来源错误:
{{1}}
如何解决?请帮帮我。
答案 0 :(得分:2)
您看到此错误的原因是存储过程未选择您尝试读取的所有列,您需要确保此处的选择列表:
select top 1 FullName,Email,Password,imgurl from registration order by Id desc
包含您在此处阅读的所有列:
User obj = new User();
obj.Id = Convert.ToInt32(DR["Id"]);
obj.FullName = DR["FullName"].ToString();
obj.Email = DR["Email"].ToString();
obj.Password = DR["Password"].ToString();
obj.Address = DR["Address"].ToString();
obj.Imgurl = DR["Imgurl"].ToString();
lst.Add(obj);
顺便说一句,我建议您创建单独的存储过程来读取和写入数据,以便您可以为它们提供独立的权限。您可能还需要检查读取中的空值
DR["<column>"]
可以导致DBNull.Value(如果列可以为空)以及实际值,如果在这种情况下尝试转换为int,则会出错。 您可能还想考虑为什么要选择&#34;最后一个用户&#34;因为在多线程环境中,如果您依赖于先前插入的那个,您可能会看到意外的结果。
答案 1 :(得分:0)
您缺少存储过程中的Id列。
这是正确的句子: 通过Id desc
从注册订单中选择前1个Id,FullName,电子邮件,密码,imgurl请试试。
问候!
答案 2 :(得分:0)
问题是,当select语句中没有ID时,你试图获取它。
在下面的语句中,在选择查询中添加ID,如
if(@Activity = 'All')
select top 1 Id, FullName,Email,Password,imgurl from registration order by Id desc
End