Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как сохранить файл в БД MS SQL Server?


Алексей Петухов ©   (2004-02-16 07:27:00) 

Здравствуйте уважаемые мастера.

Не подскажете, как сохранить файл в БД MS SQL Server?
я делаю так:
Читаю файл по батам и набираю в string функцией CHR.
Затем сохраняю в БД в поле text. Воссоздать не получается.

Причем с БД paradox все проходит хорошо, там я для хранения файла использую поле типа BLOB(1,3) "Formated memo"

Подскажите что мне делать?

Заранее благодарен.


Nikolay M.   (2004-02-17 09:06:00) [1]


> В принципе в поле типа text то-же любые данные хранить можно,
> а все-таки поле text гроаздо длиннее.
> Хотя нет, извините, то-же 2Гбайт.

Тебе говорят как правильно, а ты все о том же.
Хотя бы аргумент, что в среднем бинарник, переведенный твоим способом в текст, будет занимать раза в 2-3 больше, чем если бы его хранить image-ем тебя тоже не переубедит?


Алексей Петухов   (2004-02-16 18:43:00) [2]

Спасибо большое всем з помощь
А по поводу

> а не проще использовать тип поля Image (так всеже надежнее,
> храни хоть текст хоть бинарник)

В принципе в поле типа text то-же любые данные хранить можно,
а все-таки поле text гроаздо длиннее.
Хотя нет, извините, то-же 2Гбайт.


mtb   (2004-02-16 13:27:00) [3]

>>Читаю файл по батам и набираю в string функцией CHR.
>>Затем сохраняю в БД в поле text. Воссоздать не получается.

а не проще использовать тип поля Image (так всеже надежнее, храни хоть текст хоть бинарник)

с таким кодом для записи

ATable1.Append;
TblobField(ATable1.FieldByName("bl")).LoadFromFile("c:\asdsa.exe");
ATable1.Post;

для чтения данных

TBlobField(ATable1.FieldByName("bl")).SaveToFile ("c:\asssa123.exe")


bl название поля на МС скуель (image!!!)


Алексей Петухов   (2004-02-16 12:10:00) [4]


> Вот только код затаил и показывать не хочет :)

:-) Ежели надо то код покАжу.
Проблема решилась установкой в свойстве поля TransLiterate:=false.
А по поводу чесания: я еще и не так умею. О как :-)


Nikolay M.   (2004-02-16 11:52:00) [5]


> сдается мне, что поле типа BLOB(1,3) "Formated memo" не
> подойдет для бинарных файлов - memo для текста,

Во-первых, это у него для парадокса, а во-вторых, он их все равно потом в строку через CHR в строку колбасит. Вот только код затаил и показывать не хочет :)


Danilka   (2004-02-16 11:46:00) [6]

А какой файл пишешь, текстовый или бинарный?
Вообще-то я не знаток МС-Скуля, но, сдается мне, что поле типа BLOB(1,3) "Formated memo"не подойдет для бинарных файлов - memo для текста, у тебя скорее всего всякие символы теряются, или вообще, кодировка на какой-нибудь юникод меняется :))


Nikolay M.   (2004-02-16 11:44:00) [7]


> Читаю файл по батам и набираю в string функцией CHR.
> Затем сохраняю в БД в поле text

Левой рукой правое ухо чешешь, имхо.

Сделай-таки поле типа image и загружай файл, как сказали в [1].


Алексей Петухов   (2004-02-16 11:39:00) [8]


> TBlobField.LoadFromFile(const FileName: string);
> Чем не подходит?

Не подходит. Результат - тот же.
Проблема не в том как получить и присвоить данные полю, а в том как их сохранить на MS SQL 2000.
После сохранения данных на сервер при получаю не то, что пытался сохранить.


Delirium   (2004-02-16 10:28:00) [9]

Лучше не text, а image - чтобы не было проблем с бинарными файлами.


asp   (2004-02-16 09:35:00) [10]

TBlobField.LoadFromFile(const FileName: string);
Чем не подходит?


Наверх

Титульная страница Поиск, карта сайта Написать письмо