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

 
Запись BLOB в БД — another user changed record, Запись BLOB в БД — another user changed
muk07
Отправлено: 11.10.2006, 08:01


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

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



Среда: MSSQL 2000 CBuilder5 BDE
Имею текст для помещения картинки в БД. Получаю отлуп. В поиске не нашёл.

void __fastcall TfrmBLOB::mnuLoadClick(TObject *Sender){
if(!dlg->Execute()){ // TOpenPictureDialog
return;
}
int ID=que->FieldByName("Tovar_ID")->AsInteger; // ID беру из другого запроса
TQuery *q=CreateQuery(db, // это моя ф-я создаёт запрос и подставляет параметры
"select Tovar_ID, Photo from Tovar where Tovar_ID=:ID",
"ID",INT_TYPE,ID,
0);
q->RequestLive=true;
q->Open();
TBlobField *b=(TBlobField *)q->FieldByName("Photo");
q->Edit();
TBlobStream *bs=new TBlobStream(b,bmWrite);
char buf[BUFSIZE];
FILE *f=fopen(dlg->FileName.c_str(),"rb");
int nByte;
do{
nByte=fread(buf,1,BUFSIZE,f);
bs->Write(buf,nByte);
} while(BUFSIZE==nByte);
fclose(f);
q->Post(); // ВОТ ЗДЕСЬ "another user changed record"
delete bs;
delete q;
}
olegenty
Отправлено: 11.10.2006, 08:14


Ветеран

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



Извращанец?
CODE

TADOQuery *q = new TADOQuery(this);
q->SQL->Text = "insert into [table] values (:ID, :BLOB)"
TParameter *ID = q->Parameters->CreateParameter("ID", ftInteger, pdInput, 0, NULL);
TParameter *BLOB = q->Parameters->CreateParameter("BLOB", ftBlob, pdInput, 0, NULL);

q->Connection = YourConnection;

ID->Value = YourIDValue;
BLOB->LoadFromFile(dlg->FileName, ftBlob);

q->ExecSQL();

delete q;


BDE + MSSQL = неверное в корне решение

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