![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Roo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 17.10.2005 Репутация: нет Всего: нет |
Как оптимальнее хранить документ MS Office (Word или Excel) в БД? Т.е. чтобы он не был доступен на диске в виде файла, а напрямую хранился в БД? Как это реализовать? Не могу ничего по этому поводу в MSDN найти.
|
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Юзай тип поля image в SQL Server'е. В нем могут храниться любые бинарные данные.
|
|||
|
||||
Roo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 17.10.2005 Репутация: нет Всего: нет |
Спасибо, arilou! Правда, не могу докопаться до того, как это реализовать (т.е. как документ вёрда записать побайтово в БД и вообще хранить в байтовом виде)..
|
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Roo
Он и так уже в бинарном виде. Просто читаешь его в байтовый массив и пишешь в поле через parametrized query (UPDATE MyWordFileTable SET WordDocument = ?, где ? - параметр запроса, передаваемый через SqlCommand.Parameters). |
|||
|
||||
Roo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 17.10.2005 Репутация: нет Всего: нет |
"Просто читаешь его в байтовый массив"
с этим проблема... как Document в byte[] переписать? подробных описаний вёрдовских методов нигде не встречал... |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Выложил пример, как это делается с пом. clipboard: http://forum.vingrad.ru/index.php?showtopi...st&p=621325 -------------------- ![]() |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
||||
|
||||
Roo |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 17.10.2005 Репутация: нет Всего: нет |
Умеем-с, только с вёрдом не ахти как |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Открываешь файл, считываешь в byte[] и кладешь в БД. В чем именно сложность? |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Roo, посмотри ссылку которую я дал, там всё написано.
-------------------- ![]() |
|||
|
||||
RedButterfly |
|
|||
Учусь ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 4.7.2005 Где: Уфа->Москва Репутация: нет Всего: нет |
||||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
RedButterfly, для чего?
|
|||
|
||||
Wanderer2019 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 937 Регистрация: 3.12.2004 Где: Санкт-Петербург/П рага Репутация: 1 Всего: 17 |
Тебе и не нужен объект ворда. Читаешь файл как любой другой - произвольного типа. Что то типа вот -
После чего в file_bytes у тебя и есть этот док файл в виде массива байт. |
|||
|
||||
RedButterfly |
|
|||
Учусь ![]() Профиль Группа: Участник Сообщений: 132 Регистрация: 4.7.2005 Где: Уфа->Москва Репутация: нет Всего: нет |
Чтобы он хранился в виде поля image в базе данных. Чтобы как Вордовский документ нигде не существовал. Чтобы залить его в базу и вытаскивать оттуда. |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Image - устаревший тип. Рекомендуется использовать varchar(max). Весьма спорное решение. Все-таки DBA сходятся в том, что blob-данные лучше хранить на жестком диске, а в базе хранить только указатель на них. Я сам недавно столкнулся дилеммой "хранить blob-данные в базе или нет". Провел тестирование под MS SQL Server 2005. Пришел к выводу, что на производительность запросов (тех, которые не задействуют сами blob-данные) хранение blob-данных в базе не влияет (насколько я помню, эти данные просто хранятся в отдельной области в базе данных, поэтому их присутствие не сказывается на производительности). Однако есть еще пара нюансов. Например, уже так просто не откроешь в Management Studio (или в любом другом клиенте) табличку (а в процессе разработки это очень удобно): открытие таблицы, которая весит гигабайт (это так, для начала ![]() 1. Скачивать файл на клиент полностью нельзя, т. к. передача на клиент, например, 2 гигабайт данных просто убьет среднестатистическую тачку (OutOfMemoryException). Нужно использовать последовательное считывание и обработку (например, запись на жесткий диск на клиенте). Пример такого считывания я уже как-то приводил. 2. Если считывать большие файлы из базы, очень долго будет открыт connection к базе. Насколько я могу судить, connection к базе - гораздо более серьезный ресурс, нежели connection к серверу (при традиционном хранении файлов). Кроме того, если я не ошибаюсь, на некоторые СУБД есть лицензии, которые ограничивают количество одновременных соединений. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |