sql = "select userid,moterid,username  from userprofile  where line='" + strUser + "' order by userid ";        //设置SQL语句
            SqlConnection con = dataOperate.createCon();
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataReader rd = cmd.ExecuteReader();
            while (rd.Read())
            {
                sql = "select top 1  * from singlemoter where datetime>='" + startDate + " 00:00" + "'and datetime<='" + endDate + " 23:59" + "'and userid='" + rd["userid"].ToString() + "' and moterid='" + rd["moterid"].ToString() + "' order by datetime desc";        //设置SQL语句
                MonthsElectricityNumber.DataSource = dataOperate.getDataset(sql, "singlemoter");    //获取数据
                MonthsElectricityNumber.DataBind();
            }
这代码有个问题,就是最后只能显示一个userid(第一句查出的条目中最后一条),我现在想将所有数据都显示出来,该怎么写???

解决方案 »

  1.   

    应该不是这,rd中所读出的数据就有多条(userid),然后它的每一条作为一个条件在循环中,我想将其都显示出来,但现在我知道怎么写???
      

  2.   

    你把你的singlemoter 和userprofile 表INNER JOIN下就可以了啊。没必要做这么多次查询的
      

  3.   

    給你改一下: //取得區域列表
            public static DataSet QueryInfo()
            {
               string sql=" select top 1 b.* from (select userid,moterid from userprofile where line='" + strUser + "' order by userid)a,singlemoter b where b.datetime>='" + startDate + " 00:00" + "'and b.datetime<='" + endDate + " 23:59" + "'and a.userid=b.userid and a.moterid=b.moterid order by b.datetime desc";            SqlConnection con = dataOperate.createCon();
                con.Open();
                SqlDataAdapter dad = new SqlDataAdapter(sql, con);            DataSet dst = new DataSet();            try
                {
                    con.Open();                dad.Fill(dst, "QueryInfo");
                }
                catch (SqlException e)
                {
                    // Handle exception.
                    throw new Exception(e.Message);
                }
                finally
                {
                    con.Close();
                }            return dst;
            }
      

  4.   

    select * from table where 1==1