C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Картинки в dBase, Вставка картинок
BaiT
Отправлено: 10.06.2006, 17:16


Ученик-кочегар

Группа: Участник
Сообщений: 6



Подскажите пожалуйста, как вставить картинку в базу данных формата dBase. Механизм доступа к БД — ADO.

Поле под картинку — BLOB OLE Object.
Стандартным способом:
ADOTable1PICTURE->LoadFromFile("c:\\T.bmp");- не работает.

Мне посоветовали через потоки TStream, но я без понятия, что это такое.[CODE]

Отредактировано BaiT — 10/06/2006, 17:16
BaiT
Отправлено: 11.06.2006, 17:45


Ученик-кочегар

Группа: Участник
Сообщений: 6



Или напишите ссылки, где можно прочитать про работу с БД формата dBase.
Konstantine
Отправлено: 11.06.2006, 23:00


Мастер участка

Группа: Модератор
Сообщений: 545



не знаю есть и в dBase BLOB, но если есть. то через Stream делаю так (кусок моей проги на чтение картинки из базы):
CODE
TMemoryStream *st=new TMemoryStream;
((TBlobField*)(Query->FieldByName("Image")))->SaveToStream(st);
st->Position=0;
Image[idx]->LoadImageFromStream(st);
delete st;

P.S.:у меня в проге использую GIF и данный способ требует чтоб в картинку и ранне был загружен GIF-рисунок (я просто неуверен что правильно создам-освобожу память, лучше загружу файлик 1х1 прозрачный smile.gif)

Отредактировано Konstantine — 11/06/2006, 23:02
BaiT
Отправлено: 12.06.2006, 01:24


Ученик-кочегар

Группа: Участник
Сообщений: 6



Спасибо за пример с потоками, теперь более менее понятно как ими пользоваться.
Однако картинки упорно не хотят загружаться в БД. Либо вообще игнорируют все действия, либо при вызове функции Post() выкидывается сообщение:
"Произошли ошибки при выполнении многошаговой операции. Проверьте значения всех операций."

Может я подключение к БД криво сделал? Вот мой ConnectionString:
"Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Mode=ReadWrite;Initial Catalog=C:\DataBase" — я в ней не разбирался особо, поэтому тыкал наугад.

Помогите пожалуйста, а то я совсем запутался.

Отредактировано BaiT — 12/06/2006, 01:24
BaiT
Отправлено: 12.06.2006, 22:27


Ученик-кочегар

Группа: Участник
Сообщений: 6



Все, ошибка исправилась. Подвох был именно в способе подключения к БД. Как и предположил — кривой ConnectionString оказался.

Вернуться в Работа с базами данных в C++Builder