2011-01-17 2 views
0

Мне нужен код для хранения (в конечном итоге больших) файлов в БД с использованием C#.Сохранение больших двоичных данных в sql DB с C#

Решение я использую СТГ, как: (я использую VARBINARY колонки (МАКС) в БД)

1) Создание SqlCommand

2) Создание SqlParameter

3) Set parameter.Value = File.ReadAllBytes (Filepath)

4) Execute SqlCommand

есть ли более эффективное решение? Поскольку файл может быть большим, я боюсь проблем с производительностью, читая все байты в памяти, а затем сохраняя их в БД.

Спасибо заранее

+0

Это не точный дубликат, но очень похож на http://stackoverflow.com/questions/8952/storing-a-file-in-a-database-as-opposed-to-the-file-system. Это вопрос был задан здесь по-разному, и консенсус всегда заключается в том, что хранение файлов в базе данных - плохая идея. В конечном итоге производительность почти всегда будет проблемой. – David

+2

@David - ** Large ** файлы. См. Этот технический документ: http://research.microsoft.com/apps/pubs/?id=64525 – Oded

+0

Спасибо за ссылку @Oded. Читай сейчас. – David

ответ

1

Что у вас есть лучшее, что вы можете получить с varbinary(MAX) колонке. Пока вы можете передавать данные из из базы данных, нет способа передать его в.

2

Я столкнулся с той же проблемой прямо сейчас. Существует способ последовательной записи в поля varbinary. Смотрите эту статью: «Загрузка и выгрузка изображений с SQL Server с помощью ASP.NET MVC» http://www.codeproject.com/KB/aspnet/streamingblobhttp.aspx

Он показывает способ использовать такую ​​команду:

UPDATE <table> SET <field>.WRITE(@data, null, null) WHERE ... 

Это позволяет писать куски данных в столбец без чтобы прочитать весь файл.

 Смежные вопросы

  • Нет связанных вопросов^_^