|
소스상 문제는 없어 보입니다만...
sv->SaveToFile("c:\\음식.txt"); <= 이 부분에서 시간을 잡아 먹는 거라고 생각됩니다.
다음과 같이 고쳐보세요
FILE* pResult = fopen("c:\\음식.txt", "wt");
if(pResult <= 0){
//파일 생성 실패에 따른 에러처리
}
//-------------------------------------------------------
while(!AppDsource->DataSet->Eof)
{
ss=AppDsource->DataSet->FieldByName("음식")->AsString;
//sv->Add(ss);
fprintf(pResult, "%s\n", ss.c_str());
AppDsource->DataSet->Next();
}
//----------------------------------------------------------
//sv->SaveToFile("c:\\음식.txt");
if(pResult > 0)
fclose(pResult);
최진호 님이 쓰신 글 :
: 안녕하세요..먼저 이글을 읽어 주신 분에게 감사를 드립니다
:
: 지금 제가 할려는 작업은 DB에서 데이터를 내려 받으려고 합니다.
:
: record 는 2만개 정도 컬럼은 4개 정도 입니다
:
: 두번째 "음식" 컬럼전체만을 내려 받을려고 합니다.
:
: TADOQuery *AppQuery = new TADOQuery(this);
: DataSource* AppDsource = new TDataSource(NULL);
:
: DM->DBcon->LoginPrompt =false;
: AppQuery->Connection=DM->DBcon;
: AppDsource->DataSet = AppQuery;
: TStringList *sv =new TStringList();
: AnsiString ss;
:
: AppQuery->Close();
: AppQuery->SQL->Clear();
: AppQuery->SQL->Add("select * from 모든품목");
: AppQuery->Open();
: //-------------------------------------------------------
: while(!AppDsource->DataSet->Eof)
: {
: ss=AppDsource->DataSet->FieldByName("음식")->AsString;
: sv->Add(ss);
: AppDsource->DataSet->Next();
: }
: //----------------------------------------------------------
: sv->SaveToFile("c:\\음식.txt");
:
: delete AppQuery;
: delete AppDsource;
: delete sv;
: ShowMessage("작업완료");
:
: 그런데 문제는 하나의 필드만 내려 받는데 시간이 무지 많이 걸려던데..원래 이런가요..아님.. 다른방법이 있는지요?
: MSSQL 에서는 select * from 모든 품목 하면 1초도 안걸리던데..이걸 작업하면..7초 정도 걸립니다..
:
: 아무래도 이상해서 질문을 드립니다. (참고로 전체를 TStringList 로 읽어서 해당 부분만 빼는데도 1초 미만입니다)
: 그럼 많은 답변 부탁드립니다 !!!!
|