B
boden
Суть: надо создать поток(и) из которого осуществлять чтение/запись в БД. Но я столкнулся с некоторыми проблемами. Прошу помощи.
Мой код:
Код:
Если исполнять этот код, как приведено, т.е. в основном потоке, то все зашибись, если перенести "блок А"(или, например, последнюю инструкцию с Execute) в "точку А" (в создаваемый поток), то прога падает в "точке Х"(если перенесена только строка с execute, то, соответственно, в точке с execute). Ошибка вылетает "Ассеss violation at .... write of address ..."
Мой код:
Код:
Код:
DWORD WINAPI SQL_Thread(LPVOID ptr)
{
// точка (А)
return 0;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// ------------ начало блока (А) -------------------
TSession* s;
TDatabase* db;
s=new TSession(0);
s->SessionName="my_session";
s->Open();
db=new TDatabase(0);
db->DatabaseName="MY_DB";
db->DriverName="MSACCESS";
db->HandleShared=true;
db->Exclusive=false;
db->KeepConnection=false;
db->Params->Text="DATABASE NAME=F:\\borland\\work\\data.mdb";
db->LoginPrompt=false;
db->SessionName="my_session";
db->Open(); /// точка Х
db->Execute("insert into images (`value`, `hash`,`system_id`) values(1111,1222,1)");
// ------------ конец блока (А) --------------
DWORD thr=0;
CreateThread(NULL,0,&SQL_Thread,0,0,&thr);
}