Как я могу эффективно передавать большие данные из SQL Server 2008 в веб-браузер?

Я использую 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");

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

Другие вопросы по тегам