+ -
当前位置:首页 → 问答吧 → 页面如何读取数据库并随机显示不重复的数据?

页面如何读取数据库并随机显示不重复的数据?

时间:2011-12-11

来源:互联网

页面上有一个按钮,点击一次按钮,页面就会显示7行数据,每点击一次按钮,前面显示的数据不会消失,数据库表TabelC有73行数据,如何读取数据库表TabelC并随机显示7行数据,并且每次显示的7行数据都不重复,而且最后一次点击按钮依然会显示最后的3行数据


下面的CS代码可以在页面上通过创Table来随机显示7行数据(但不能做到与之前显示过的数据不重复)

CS代码:


public class A : System.Web.UI.Page
{
  Button rebt1;
  Button rebt;

private void Page_Load(object sender, System.EventArgs e)
{
BandText();

if(!Page.IsPostBack)
{

}
}



  protected void BandText()
{
Panel3.Controls.Add(new LiteralControl("<table align='center'>"));



try
{
conn.Open();
SqlCommand cmd = new SqlCommand("select top 7 * from TableC order by newid()", conn);

SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds, "infos");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Panel3.Controls.Add(new LiteralControl("<tr>"));
TableCell cell = new TableCell();//创建单元格,也就是第一列
cell.Text = ds.Tables[0].Rows[i]["数据列1"].ToString();//设置单元格内的内容
Panel3.Controls.Add(cell);
Panel3.Controls.Add(new LiteralControl("\n"));
Panel3.Controls.Add(new LiteralControl("<td>"));
TextBox text = new TextBox();
text.ID = "txt" + ds.Tables[0].Rows[i]["Id"].ToString();
text.Text = ds.Tables[0].Rows[i]["数据列3"].ToString();
Panel3.Controls.Add(text);
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));

   

}
Panel3.Controls.Add(new LiteralControl("<tr>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
rebt1 = new Button();
rebt1.ID = "rebt1";
rebt1.Text = "保存";
rebt1.Click += new EventHandler(rebt1_Click);
Panel3.Controls.Add(rebt1);
   
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));
Panel3.Controls.Add(new LiteralControl("</table>"));



}
catch (Exception)
{

throw;
}
finally
{
conn.Close();
}
}
}


点击一次按钮,页面就会显示7行数据,每点击一次按钮,前面显示的数据不会消失,也就是将页面上出现过的Id组成一个临时表,或数组,关键是这个临时表如何组成呢?

作者: scorpio78787878   发布时间: 2011-12-11

感觉临时表不好,你在前段程序里定义一个全局datatable存放已经取出去的数据
写个存储过程
SQL code
create proc pr_name (@ids varchar(100))
as
begin
    select top 7 * from tb where charindex(','+id+',',','+@ids+',')=0 order by newid()
end
exec pr_name '1,2,3,4,5,6,7'


每次调用存储过程就把全局table里的id组成一条逗号连接的字符串传给pr_name

作者: ssp2009   发布时间: 2011-12-11

引用 1 楼 ssp2009 的回复:
感觉临时表不好,你在前段程序里定义一个全局datatable存放已经取出去的数据
写个存储过程

SQL code

create proc pr_name (@ids varchar(100))
as
begin
select top 7 * from tb where charindex(','+id+',',','+@ids+',')=0 order by newid……


虽然你的这个方法挺好,但如果不用存储过程,用其他的方法可以实现吗?

作者: scorpio78787878   发布时间: 2011-12-11

相关阅读 更多