【问题标题】:How can I efficiently stream large data from SQL Server 2008 to a web browser?如何有效地将大型数据从 SQL Server 2008 流式传输到 Web 浏览器?
【发布时间】:2013-04-03 07:18:48
【问题描述】:

我正在使用 C# 和 ASP.NET MVC 3。目前,我从 SQL Server 获取大量数据,将其添加到 StringBuilder,然后使用 System.Text.ASCIIEncoding 转换 StringBuilder对象为 byte[] 数组。

然后我将byte[] 数组发送到视图。但是,数据量这么大,我得到以下异常:

抛出了“System.OutOfMemoryException”类型的异常

这是我在控制器中用于将StringBuilder 对象转换为byte[] 然后返回视图的代码。有没有办法将数据直接从数据库流式传输到客户端浏览器,而无需先将其全部加载到服务器的内存中?

System.Text.ASCIIEncoding encoding = new ASCIIEncoding();
return File(encoding.GetBytes(csv.ToString()), "text/csv", "Query_Export.csv");

【问题讨论】:

    标签: c# sql-server binarystream


    【解决方案1】:

    你可以做类似下面伪代码的事情

      while (sqlReader.GetBytes(params))//params is a placeholder for the actual arguments and
                                        //will have a byte array buffer and some counter indexes
      {
          context.Response.BinaryWrite(buffer);
          //somecounter
      }
    

    SqlDataReader http://msdn.microsoft.com/en-in/library/system.data.sqlclient.sqldatareader.aspx

    【讨论】:

    • 太棒了!感谢您及时的回复。我要试一试。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2012-02-17
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多