![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка BLOB поля в таблицу MySQL [D7, MySQL]
WolandUSSR © (2004-12-20 08:47:00)Нужно вставить BLOB поле в таблицу MYSQL. Использую dbExpress. Вот код:
var BStream:TSQLBlobStream;
BField:TBlobField;
begin
DataSet.Close;
BField:=TBlobField.Create(Owner);
BField.SetFieldType(ftBlob);
BField.FieldName:='Data';
BField.DataSet:=DataSet;
WorkQuery.SQL.Clear;
WorkQuery.SQL.Add('INSERT INTO tdata (ID,Data) VALUES(1,NULL)');
WorkQuery.ExecSQL;
DataSet.Close;
DataSet.CommandText:='SELECT data FROM tData where ID=1';
DataSet.Open;
BStream:=TSQLBlobStream.Create(DataSet.FieldByName('Data') as TBlobField,bmRead);
DataSet.Edit; <<-- здесь ошибка
OLEContainer.SaveToStream(BStream);
BField.Index:=DataSet.FieldCount;
BField.LoadFromStream(BStream);
DataSet.Post;
end;
Выдает ошибку: Data Set Read only.
В хелпе по этому поводу написано: "There is no built-in editing support: you can only edit the data in an SQL dataset by explicitly creating an SQL UPDATE command or by connecting the dataset to a client dataset using a provider."
Что значит "client dataset using a provider"?
Как с этим вообще бороться?
Решпект.
Nikolay M. (2004-12-20 09:50:00) [1]
> Что значит "client dataset using a provider"?
> Как с этим вообще бороться?
Очевидно, написано, что если ты хочешь делать
DataSet.Edit;
...
DataSet.Post;
то к твоему датасету нужно подцепить DataSetProvider, a к нему - ClientDataSet и работать с данными уже через ClientDataSet. Собственно, такая связка CDS-DSP сводит редактирование полей к генерации провайдером запросов INSERT/UPDATE/DELETE.
А лучше, имхо, взять Zeos library и не мучиться.