如何将SQL结果从一个页面传递到另一个页面C#asp.net

本文关键字:net C#asp 另一个 一个 SQL 结果 | 更新日期: 2023-09-27 18:24:34

我正在构建一个web应用程序,该应用程序将具有多个表单页面,用于从数据库中提取数据并导出到excel。

为了避免我复制相同的代码导出到excel,我制作了一个输出页面,其中包含一个网格视图和一个按钮,单击该按钮可以运行我的导出到excel代码。

我将sql查询或存储过程的结果从表单页面传递到输出页面,方法是将数据表存储在会话对象中,并将其设置为gridview的数据源。

然而,我不知道某些结果会有多大,也不知道有多少用户会同时使用这些表单,所以我预计会话对象不是最好的主意。

如有任何想法,我们将不胜感激,谢谢。

其中一个表单页面的C#代码

        DataTable myDataTable = new DataTable();
        string myConnectionString = //connectionstring text
        SqlConnection myConnection = new SqlConnection(
            ConfigurationManager.ConnectionStrings[myConnectionString].ConnectionString);
        string mySQL = //built sql query
        SqlDataAdapter myDataAdaptor = new SqlDataAdapter(mySQL,myConnection);
        using(myDataAdaptor)
        {
            myDataAdaptor.Fill(myDataTable);
        }
        Session["Output"] = myDataTable;
        Response.Redirect("output.aspx");

输出页面上的C#代码

    protected void Page_Load(object sender, EventArgs e)
    {
        gvOutput.DataSource = Session["Output"];
        gvOutput.DataBind();
    }

如何将SQL结果从一个页面传递到另一个页面C#asp.net

您基本上必须将值存储在页面、会话、以sessionid为键的缓存范围之外,序列化和反序列化值只是其中的几个。

对于不太容易访问的页面会话来说,inproc会话为频繁访问的页面提供这些数据怎么样?

这基本上是一个设计选择,应该根据页面上的流量、预测的数据大小等进行考虑。

会话是宝贵的,如果管理不善,可能会影响性能。想象一下,随着应用程序的增长,查询会返回大量数据。

简而言之,如果您的页面访问率不高,并且您存储的会话数据适合您的硬件,那么会话是一个公平的选择。