請問各位: db => access 2003,用ODBC 我用一迴圈連續寫9筆資料到table中,每次寫完6筆後,就cpu使用率到100%...後面的都無法寫入.
下列為我寫db的程式
if(!DBBuffer.empty())
{
ShowMessage("GPS no save to DB " IntToStr(DBBuffer.size()));
AnsiString DAY;
vector::iterator Ptr = DBBuffer.begin();
unsigned int Total = DBBuffer.size();
for(unsigned int i=0;iDate 4,2) "/" AnsiString(Ptr->Date 2,2) "/" AnsiString(Ptr->Date,2) " ";
DAY = AnsiString(Ptr->Time,2) ":" AnsiString(Ptr->Time 2,2) ":" AnsiString(Ptr->Time 4,2); Form1->TableGPS->Append();
//ShowMessage("Setp1");
Form1->TableGPS->FieldByName("Unit_id")->AsString = AnsiString((char*)Ptr->ID,Max_ID/2);
//ShowMessage("Setp2");
Form1->TableGPS->FieldByName("DateTime")->AsDateTime = IncHour(StrToDateTime(DAY),8);
//ShowMessage("Setp3");
Form1->TableGPS->FieldByName("WGS_LON")->AsFloat = StrToFloat(AnsiString(Ptr->WGS_LON,sizeof(Ptr->WGS_LON)))/100;
//ShowMessage("Setp4");
Form1->TableGPS->FieldByName("WGS_LAT")->AsFloat = StrToFloat(AnsiString(Ptr->WGS_LAT,sizeof(Ptr->WGS_LAT)))/100;
//ShowMessage("Setp5");
Form1->TableGPS->FieldByName("Heading")->AsInteger = StrToCurr(AnsiString(Ptr->Heading,sizeof(Ptr->Heading)));
//ShowMessage("Setp6");
Form1->TableGPS->FieldByName("Speed")->AsFloat = StrToFloat(AnsiString(Ptr->Speed,sizeof(Ptr->Speed)))*1.853;
//ShowMessage("Setp7");
Form1->TableGPS->FieldByName("Sat#")->AsInteger = (StrToIntDef(AnsiString(Ptr->Sat,sizeof(Ptr->Sat)),0) >= 9)?9:StrToIntDef(AnsiString(Ptr->Sat,sizeof(Ptr->Sat)),0);
//ShowMessage("Setp8");
Form1->TableGPS->FieldByName("IO1")->AsString = AnsiString(Ptr->IO1);
//ShowMessage("Setp9");
Form1->TableGPS->FieldByName("IO2")->AsString = AnsiString(Ptr->IO2);
//ShowMessage("Setp10");
Form1->TableGPS->FieldByName("IO3")->AsString = AnsiString(Ptr->IO3);
//ShowMessage("Setp11");
Form1->TableGPS->FieldByName("Data_type")->AsString = AnsiString(Ptr->Type);
//ShowMessage("Setp12");
Form1->TableGPS->Post();
//ShowMessage("Setp13"); //DBBuffer.erase(Ptr);
//ShowMessage("Setp14");
Ptr ;
ShowMessage(IntToStr(i));
}
DBBuffer.clear();
}
發表人 - kenbcb 於 2004/12/13 17:12:41