Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение файла размером превышающим 140 кб, сервер MS SQL 2000 
:(
    Опции темы
np9mi7
  Дата 28.7.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



Добрый день.

Есть проблема: необходимо хранить образ системного файла в БД. Этот файл имеет объем более 140 кб.

Решение: binary поле;

Проблема: ограничение на размер binary 8000 байт, т.о. файл в одну запись никак не помещается;

Как быть? Может использовать другой тип данных? Вообще как сохранять файлы в БД, каким образом? Какие известные механизмы для этого существуют?

Заранее благодарен за ответы.

ps есть вариант в лоб: хранить файл в нескольких запясях (ограничение на размер binary по максимуму, те 8000), а потом собирать образ на клиенте. Мне этот вариант не нравиться, поскольку требует дополнительных накладных расходов. Так хочеться поднять поток и записать его в одно поле.


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vit
Дата 28.7.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Использовать Blob поля... В MS почему то их обозвали Image для MS SQL Server и OLE для MS Access - максимальный размер их исчисляется гигабайтами


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
np9mi7
  Дата 29.7.2005, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



А использование поля такого типа будет чем либо отличаться от использования типа binary для клиента? Клиент так же работает с этим типом как и с binary?


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vit
Дата 29.7.2005, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Отличаться может и будет... Ведь типы разные, но на то вы и програмист... В принципе поле типа Image - это любые данные в любом формате практически любого размера. Какой язык используется?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
np9mi7
  Дата 29.7.2005, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



язык C++ smile , IDE Borland Builder C++ 6.0, работа с БД через ADO.

В ADO, для работы с БД используется переменные типа tagVariant - соответственно с Borland Builder IDE враппер Variant;

Интересны отличия в такой позиции:
Код

create table tSome (
   theFileImage         image                null,
   id                   bigint               identity,
   constraint PK_TSOME primary key  (id)
)
go

create view vSome as
select * from tSome
go



Далее на клиенте:
Код

TADOQuery* pRecordSet = new TADOQuery(NULL);
const __int64 iIdentity(32);
pRecordSet->SQL->Add("SELECT theFileImage FROM vSome WHERE id = " + AnsiString(iIdentity));
pRecordSet->Open();
Variant vImageValue = m_pRecordSet->Fields->FieldByName("theFileImage")->Value;
pRecordSet->Close();
delete pRecordSet;


Все будет хорошо? Или тут есть какие тонкости? С этим Variant как с binary работать? В vImageValue лежит образ файла?

ps:
Цитата
Отличаться может и будет... Ведь типы разные, но на то вы и програмист...
, я имел ввиду под словом отличаться не операции сложения и вычитания smile , а именно работа с БД, момент получения и отправки

Это сообщение отредактировал(а) np9mi7 - 29.7.2005, 01:30


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vit
Дата 29.7.2005, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



В Дельфи:


(ADOQuery1.fieldByName('MyImageField') as TBlobField).SaveToStream(MyAnyStream);

В целом лучше через варианты не надо. Есть тип TBlobField - приводите своё поле к нему, а дальше у TBlobField есть методы загрузки выгрузки в поток или файл. Если вам надо хранить файл, то легче прямо использовать метод SaveToFile, LoadFromFile
Добавлено @ 15:16
Ещё загляните в наш FAQ, я там (правда по Дельфи, но разницы с билдером никакой) довольно много материала собрал

http://forum.vingrad.ru/index.php?act=modu...dule=vingradfaq


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
np9mi7
Дата 29.7.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: нет
Всего: 10



Vit, спасибо за помощь.


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.