![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB-поле [D7, Firebird]
kalliopiy © (2004-03-05 13:30:00)Здравствуйте!
Возникли проблемы при попытке добавления записи в таблицу с BLOB-полем. Я пытаюсь сделать это через TIBSQL приблизительно через следующий код
with TStringList.Create do
begin
LoadFromFile(docForm.filePathEd.Text);
s:=QuotedStr(Text);
Free;
end;
Q:=TIBSQL.Create(nil);
Q.Database:=lawdocsDB;
Q.Transaction:=lawdocsTA;
Q.Transaction.StartTransaction;
Q.SQL.Add('INSERT INTO "docs" VALUES');
Q.SQL.Add('(NULL,'+inttostr(nodeData.recID)+','+''''+docForm.docCaptionEd.Text+''','+
s+','+''''+datetostr(docForm.docDateEd.Date)+''')');
Q.ExecQuery
Но при выполнении запроса возникает ошибка SQL code = -104. Unexpected end of command.
У меня складывается такое впечатление, что это происходит из-за того, что считываемый и сохраняемый в поле БД файл слишком велик. Но сохранять-то его как-то надо! А как?
Soft (2004-03-06 05:29:00) [1]Вот простой пример
Query.SQL.Clear;
Query.SQL.Add('insert into ***');
Query.ParamByName('поле').LoadFromFile('имя файла',ftBlob);
Query.ExecSQL;
Tlank (2004-03-05 17:31:00) [2]Через хранимую процедуру можно передать параметр:
Fstr:=TFileStream.Create(OpenDialog.FileName,fmOpenRead);
with StoredProc.Parameters.AddParameter do begin
Direction:=pdInput;
StoredPRoc.Parameters[13].LoadFromStream(Fstr,ftBlob);
end;
Fstr.Free;
А получить содержимое так:
if SaveDialog.Execute then
TBlobField(fmMainQuery.FieldByName('FileAtach')).SaveToFile(SaveDialog.FileName);
Соловьев (2004-03-05 13:55:00) [3]F1 - TBlobField.LoadFromStream
kalliopiy (2004-03-05 13:50:00) [4]А как лучше? Подскажите, пожалуйста.
Johnmen (2004-03-05 13:36:00) [5]Впечатление тебя обманывает...
Такие вставки делаются через параметры запроса.
И причем здесь BLOB ? С блобами работают совсем не так...