![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирую из InterBase в MS SQL с фотографиями! [D7, IB6.x, MSSQL]
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
Jan1 (2007-04-04 15:25:00) [21]
> Странно почему одинарные
ничего странного.
> и всё же добавляет, но такая же фигня с обрезанием картинок.
> Уже не знаю что делать=(
не понял. что с обрезанием? теперь ошибки нет?
DmitrichJ (2007-04-04 15:20:00) [22]Странно почему одинарные, и всё же добавляет, но такая же фигня с обрезанием картинок. Уже не знаю что делать=(
Jan1 (2007-04-04 15:09:00) [23]
> Form1.ADOQuery1.SQL.Text:='insert into table1 (np,name,d1,
> d2) values(0,"текст",:P1,:P2)';
вместо двойных кавычек надо использовать две одинарные. И если ты уж начал использовать параметры, то чего тут всдумал вдруг подругому?
ADOQuery1 - пережиток. юзай ADOCommand.
DmitrichJ (2007-04-04 14:51:00) [24]Делаю запрос:
Form1.ADOQuery1.SQL.Text:='insert into table1 (np,name,d1,d2) values(0,"текст",:P1,:P2)';
Ошибка:
The name 'текст' is not permitted in this context. Only constants, expression, or variables allowed here. Column names are not permitted.
name varchar(200)
Jan1 (2007-04-04 13:58:00) [25]
> А при использовании ADO даёт ошибку.
и где она?
DmitrichJ (2007-04-04 13:56:00) [26]Jan1, использую BDE Query по такому же принципу. Картинки загружает, но не полностью. А при использовании ADO даёт ошибку.
DmitrichJ (2007-04-04 13:50:00) [27]Jan1, вот по этой схеме через BDE Query он и закружает только часть картинки, а при использовании ADO выдаёт ошибку=(
Jan1 (2007-04-04 13:46:00) [28]
...
ADOCommand.CommandText := ' insert into [ImageStore] ([ImageBody]) values(:ImageBody)';
ADOCommand.Parameters.ParameterByName('ImageBody').LoadFromFile(OpenDialog1.File Name, ftVarBytes);
ADOCommand.Execute();
...
Но учти что с большИми могут быть траблы... все зависит от сервера где крутится MS SQL...
DmitrichJ (2007-04-04 13:06:00) [29]Jan1, да, но проблема больше в принципе в добавлении фотографии в БД MS SQL. Т.е. вопрос звучит так: Как добавить большую картинку в MS SQL в поле IMAGE?
Jan1 (2007-04-03 18:05:00) [30]
> Jan1, хорошо. А как потом пользователям добавлть фотографии?
не понял. причем тут пользователи? тебе надо перенести данные из ФБ в МС? или чего?
DmitrichJ (2007-04-03 17:35:00) [31]Jan1, хорошо. А как потом пользователям добавлть фотографии?
Jan1 (2007-04-03 17:18:00) [32]
> Помогите всё же решить проблему. Пожалуйста.
млин а линкед то чего не подошел? залил бы за 5 сек и забыл бы о проблеме...
Правильный Вася (2007-04-03 16:28:00) [33]открываешь, находишь, читаешь описание, делаешь выводы
DmitrichJ (2007-04-03 16:22:00) [34]Правильный Вася, извини. Не совсем понял.
Правильный Вася (2007-04-03 16:09:00) [35]
> Использую Query из BDE
БДЕ администратор - configuration - drivers - native - mssql - blob size + F1
DmitrichJ (2007-04-03 15:48:00) [36]Помогите всё же решить проблему. Пожалуйста.
Jan1 (2007-04-02 11:32:00) [37]
> При работе с InterBase таким способом закачивается в БД
> через IBQuery что угодно, а тут вот фигня какая-то=(
ключевое слово InterBase. Потому как в M SQL если мы льем чего-нить через параметры, этот гад юзает sp_executesql, а это в свою очередь накладывает отпечаток на то что, сервер пытается выделить память под всю блобину... и тут начинается самое интересное...
ЗЫ чего-то мой логин украли :)
DmitrichJ (2007-03-30 20:15:00) [38]При работе с InterBase таким способом закачивается в БД через IBQuery что угодно, а тут вот фигня какая-то=(
Jan (2007-03-30 19:58:00) [39]
> Враки. Через параметры можно что угодно и сколько угодно.
нет, там все не так просто... а именно с блобом...
DmitrichJ (2007-03-30 19:47:00) [40]Desdechado, Как именно? Как записать картинку в поле типа IMAGE?