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

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

Копирую из InterBase в MS SQL с фотографиями! [D7, IB6.x, MSSQL]


Страницы:   1 2 3 4

DmitrichJ ©   (2007-03-30 16:19:00) 

Я перевржу БД из InterBase в MS SQL. Все данные копируются хорошо, но с фотографиями небольшая проблема. Они попадают в MS SQL в обрезаном виде-только начало фотографии, а всё остальное серое. Делаю так:

var
 stream:TStringStream;
...
//выборка из InterBase
 Form1.IBQuery1.SQL.Text:='Select * from ...';
...
//Вставляем в MS SQL
   Form1.Query1.SQL.Text:=
        'Insert into Table(...,photo) values (.... , :P)';

stream:=TStringStream.Create(Form1.IBQuery1.FieldByName('PHOTO').AsString);
Form1.Query1.ParamByName('P').LoadFromStream(stream,ftBlob);
Form1.Query1.ExecSQL;

Подскажите, что не так/

Поля в БД
InterBase: BLOB BLOB sub_type 1 segment size 1 CHARACTER SET WIN1251
MS SQL: IMAGE


Desdechado   (2007-03-30 19:45:00) [41]

>  Query не может передавать больше 32Кб в одном запросе.
Враки. Через параметры можно что угодно и сколько угодно.


DmitrichJ   (2007-03-30 19:43:00) [42]

Виталий Панасенко, да. Использую Query из BDE


Виталий Панасенко   (2007-03-30 18:24:00) [43]


> DmitrichJ   (30.03.07 18:01) [19]
> Я нашёл проблему. Дело в том, что Query не может передавать
> больше 32Кб в одном запросе. Есть другие варианты вставки
> записей в БД?

Это ты через БДЕ тянешь ?


Jan   (2007-03-30 18:18:00) [44]


> Используй ADO

там тоже не все так гладко...


Плохиш   (2007-03-30 18:17:00) [45]

Используй ADO


DmitrichJ   (2007-03-30 18:01:00) [46]

Я нашёл проблему. Дело в том, что Query не может передавать больше 32Кб в одном запросе. Есть другие варианты вставки записей в БД?


Плохиш   (2007-03-30 17:58:00) [47]


> stream:=TStringStream.Create(Form1.IBQuery1.FieldByName('PHOTO'). AsString);

Концом строки является символ #0, вот от этого и думай.

PS. В справке подробненько описано как работают с BLOB-полями, там, по-секрету, даже пример есть...


stud   (2007-03-30 17:56:00) [48]

так блоб используй


DmitrichJ   (2007-03-30 17:35:00) [49]

Можно ли вставить картинку stream типа TMemoryStream в MS SQL? Или может проблема в самой базе и объявлении типов? Использую тип IMAGE


DmitrichJ   (2007-03-30 17:25:00) [50]

ой. Наврал. 32 Кб. При таком способе вставки.


DmitrichJ   (2007-03-30 17:24:00) [51]

Я понял почуму обрезаются картинки.
Почему поле IMAGE в MS SQL вмещает только 2 Мб?


Jan   (2007-03-30 17:17:00) [52]


> Jan, что за линкед?

линкед сервер из MS SQL на InterBase. Ставишь ODBC драйвер - http://www.praktik.km.ua/downloads/Firebird_ODBC_2.0.0-Win32.exe, добавляешь в ODBC системный DSN - выбираешь установленный драйвер и настраиваешь на нужную тебе базу. В MS SQL добавляешь линкед сервер или через EM или sp_addlinkedserver. И данные перебрасываешь через openquery.


DmitrichJ   (2007-03-30 16:57:00) [53]

Ладно... не важно как, но в MemoryStream я получил полноценную картинку, копирую её на диск-всё нормально.

Может не так я её добавляю в MS SQL?


DmitrichJ   (2007-03-30 16:51:00) [54]

говорит, что нет такой=(


Johnmen   (2007-03-30 16:50:00) [55]

TBlobField


DmitrichJ   (2007-03-30 16:47:00) [56]

TIBBlobField из какой библиотки?


Johnmen   (2007-03-30 16:42:00) [57]

....
stream:=TMemoryStream.Create;
TIBBlobField(Form1.IBQuery1.FieldByName('PHOTO')).SaveToStream(stream);
....


DmitrichJ   (2007-03-30 16:40:00) [58]

Jan, что за линкед?


Jan   (2007-03-30 16:37:00) [59]


> Jan, можно пожробнее?

что конкретнее?


DmitrichJ   (2007-03-30 16:36:00) [60]

Jan, можно пожробнее?


Страницы:   1 2 3 4

Наверх

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