RT,我在实体层里写了一个User类,映射了数据库中userName userID userPwsd userEmail等等
然后在BLL中我想根据userID来查询到这个用户的名字,Email等等,我在DAL中写的代码是Public User GetUserByuserID(string userID)
{
    string str="select * from tbUser where userID="'+userID+'"";
    DataSet ds=SQLHeples.GetDataSet(str);
    if(ds.Tables[0].Rows.count>0)
    {
        return user;
    }
}
其中GetDataSet是我写好的数据填充的一个方法,这样写明显不对,请高手指点下应该怎样写这个返回对象,一个实体类!

解决方案 »

  1.   

    这种情况最好是用DataReader来代替DataTablepublic SqlDataReader GetReader(String sql)
    {
    SqlConnection conn = new SqlConnection("连接字符串");
    SqlCommand cmd = new SqlCommand(sql);
    cmd.Connection = conn;
    return cmd.ExecuteReader(CommandBehaivor.CloseConnection());
    }Public User GetUserByuserID(string userID)
    {
      string str="select * from tbUser where userID="'+userID+'"";
      using(SqlDataReader reader=SQLHeples.GetReader(str))
      {
      User result = null;
      if(reader.Read())
      {
         user.Name = (String)reader["userName "];
         user.Id = (Int32)reader["userID"];
      } 
      return user;
      }
    }
      

  2.   

    你这个user是哪来的?应该new一个user对象,然后根据表中的值,给user的属性赋值.
      

  3.   


    public IList<UserFeeBean> getUserFees(int start, int limit, int recordcount, string where) {
                IList<UserFeeBean> ilist = new List<UserFeeBean>();            int endindex = start + limit + 1;
                if (endindex > recordcount)
                    endindex = recordcount + 1;            string SQL_SELECT_USERFEE = string.Format(SQL_SELECT_USERFEES, where, start, endindex);            using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.SQLConnString, CommandType.Text, SQL_SELECT_USERFEE, null)) {
                    while (rdr.Read()) {
                        UserFeeBean uf = new UserFeeBean();
                        uf.Ptcode = rdr.GetString(1);
                        uf.Userid = rdr.GetString(2);
                        uf.Sendnum = rdr.GetInt32(3);
                        uf.Sendednum = rdr.GetInt32(4);
                        uf.PostPayUsed = rdr.GetInt32(5);
                        uf.Platname = rdr.GetString(6);
                        uf.Username = rdr.GetString(7);
                        uf.Custid = rdr.GetString(8);
                        uf.Custname = rdr.GetString(9);
                        uf.UpdateTime = rdr.GetDateTime(10).ToString();                    ilist.Add(uf);
                    }
                }
                return ilist;
            }
      

  4.   

      if(ds.Tables[0].Rows.count>0)
      {
      User user=new User();
      return user;
      }
    这样??
      

  5.   

    你这个是不是取出来的是唯一的 也就是说只有一条符合条件的吧 
    是的那Public User GetUserByuserID(string userID)
    {
      User use = new User();
      string str="select * from tbUser where userID="'+userID+'"";
      DataSet ds=SQLHeples.GetDataSet(str);
      if(ds.Tables[0].Rows.count>0)
      {
          //将数据取出赋值给实体类属性
          use.id=....;
          use.name=...;
      }
      return use;
    }
    其实不嫌麻烦 用我上面那中 用IList<User>  这样即使是返回的多行数据都可以
      

  6.   

    首先比如你的user表中有2个字段userNameuserID
    就可以这样
    if(ds.Tables[0].Rows.count>0)
      {
         User user=new User();
         user.Name = (String)ds.Tables[0]["userName "];
         user.Id = (Int32)ds.Tables[0]["userID"];
         return user;
      }