none
关于SqlDataReader的问题,为什么只有一条数据??其他的怎么都没有取到呢?谢谢!!! RRS feed

  • 问题

  • public IList<UserInfo> GetAll()
    {
    string strSql = "getAll";
    SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.StoredProcedure, strSql, null);
    UserInfo userInfo = null;
    IList<UserInfo> userInfoList = new List<UserInfo>();
    if (dr.Read())
    {
    userInfo = new UserInfo();
    userInfo.UserId = (int)dr["UserID"];
    userInfo.UserName = dr["UserName"].ToString();
    userInfo.UserSex = dr["UserSex"].ToString();
    userInfo.UserDesc = dr["UserDesc"].ToString();
    userInfoList.Add(userInfo);
    }
    return userInfoList;
    }
    这是那个方法,只能得到一条数据!
    很郁闷,为啥呢??
    public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
    {
    SqlCommand cmd = new SqlCommand();
    SqlConnection con = new SqlConnection(connectionString);

    try
    {
    PrepareCommand(cmd, con, null, cmdType, cmdText, commandParameters);
    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    cmd.Parameters.Clear();
    return dr;
    }
    catch
    {
    con.Close();
    throw;
    }
    }
    这个是SqlHelper里面的方法,
    我不知道为什么,请大家帮忙解决下!

    谢谢!!
    怎么老有不会的??
    2009年10月11日 7:05

答案

全部回复

  • 你表达不太清楚 
    如果一条数据 检查数据库里有没有数据 也可能输入字段错误
    如果一行数据 检查sql存储过程 sql语法是否正确 是否用了top 1 
    2009年10月11日 8:01
  • 你表达不太清楚 
    如果一条数据 检查数据库里有没有数据 也可能输入字段错误
    如果一行数据 检查sql存储过程 sql语法是否正确 是否用了top 1 

    谢谢您的答复
    我再说一下,首先数据库里面有数据,
    而且存储过程也没有错误,要不然那一条数据也出不来,
    出来的这个数据是第一条,
    我怀疑是当查到第一条后SqlDataReader就关闭了,
    所以没有查到其他的数据!!

    谢谢!!
    怎么老有不会的??
    2009年10月11日 8:13
  • 你怀疑 的 你试过没?
    我还怀疑你是否调错方法了
    2009年10月11日 8:32
  • 谢谢您的解答!
    我知道哪里错了!
    if--》while
    怎么老有不会的??
    • 已建议为答案 mldark 2009年10月11日 10:19
    • 已标记为答案 痴迷.Net 2009年10月11日 23:10
    2009年10月11日 9:36
  • 晕了 我没看出来 代码很乱
    2009年10月11日 9:51