使用C#从ASP.NET中的SQL Server检索数据

时间:2017-01-16 23:07:34

标签: c# asp.net sql-server

我已成功创建了一个母版页来上传和编辑数据,并已在我的客户页面主页上成功检索到该数据。现在这是我的问题,在我的主页上我有5个中继器从5个表中检索文本和图像的数据:

  • 主页滑块
  • 新闻
  • 专题文章
  • 校长备忘录
  • 关于学院

以下是我检索数据的代码:

private DataTable GetData(string query)
{
    string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

    SqlCommand cmd = new SqlCommand(query);

    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con;
            sda.SelectCommand = cmd;

            using (DataTable dt = new DataTable())
            {
                sda.Fill(dt);
                return dt;
            }
        }
    }
}

private void rpt_slider()
{
    try
    {
        DataTable dt1 = this.GetData("select top(5)* from H_slide");
        rpt_sli.DataSource = dt1;
        rpt_sli.DataBind();
    }
    catch (Exception)
    {
    }
}

在页面加载时:

protected void Page_Load(object sender, EventArgs e)
{    
    // homepage slider
    rpt_slider();

    // news
    rpt_news();

    // featured post
    rpt_feat();

    // principal notes
    rpt_notes();

    // about college
    rpt_about();
}

检索所有数据需要花费大量时间,尤其是在互联网速度较慢的情况下。那么可以逐个检索数据吗?首先是主页滑块,几秒后新闻数据和之后关于大学等等,以便所有数据不会立即加载,而是以几秒的间隔加载。我花了几天研究,但没有找到任何解决方案,我不知道是否可以这样做,但如果有任何解决方案,任何人都可以帮助我。

谢谢。

2 个答案:

答案 0 :(得分:1)

我担心这比你想象的要多一些。如果您需要同一页面上的所有内容,则必须使用AJAX获取它们:获取第一个集合,一旦响应返回,然后发送后续请求。 Here是您可以关注的文章。但就像我说的那样,它比你想象的要多得多。

另外,尝试使用分页。例如,如果您的一个表有100万行,则不要全部获得100万行。得到50可以控制,以便用户可以按下,然后获得下一个50,依此类推。 Here是一个教程,您可以按照分页,排序等方式进行操作。

答案 1 :(得分:0)

相反,我认为这很简单。 如果5种类型的数据彼此独立,则使用任务并行库(这需要.NET 4.5)。 从db异步获取所有这些数据并将它们绑定到转发器。 这应该会为您带来巨大的性能提升。

另请遵循@codingyoshi建议的分页建议。

如果这种性能提升还不够,请回来,我会建议其他一些改变。

代码示例:

Parallel.Invoke{()=>(
{
    // homepage slider
    rpt_slider();

},
{
    // news
    rpt_news();    
},
{
   // featured post
   rpt_feat();


},
{
    // principal notes
    rpt_notes();    
},
{
    // about college
    rpt_about();
}

)};