|
void __fastcall SetTableFields()
{
AnsiString fieldslist,titles="",types="",fn,kind,_CStr;
// 저장되어 있는 ConnectionString 값을 불러온다.
// Provider=MySqlProv;Data Source=Test;Integrated Security="";Password="";User ID=root;Location=localhost;Extended Properties=""
_CStr=_GetOptionValue("Main","ConnectionString");
TADOTable *ADOTable1=new TADOTable(Application);
TADOConnection *ADOConnection1=new TADOConnection(Application);
ADOConnection1->ConnectionString=_CStr;
ADOConnection1->LoginPrompt=false;
TStringList *ltables=new TStringList();
ADOConnection1->GetTableNames(ltables, false);
for (int z=0; z<ltables->Count; z++) {
ADOConnection1->Connected=false;
ADOTable1->Active=false;
ADOTable1->Connection=ADOConnection1;
ADOTable1->TableName=ltables->Strings[z];
try {
ADOTable1->Active=true;
} catch (...) {
ShowMessage(ltables->Strings[z]+" - 테이블 열기 오류!");
return;
}
for (int j=0; j<ADOTable1->FieldCount; j++) {
fn=ADOTable1->Fields->Fields[j]->FieldName;
....
....
}
}
delete ADOTable1;
delete ADOConnection1;
delete ltables;
}
MDB - ADO 연결에서는 아무런 문제없이 잘 실행이 되는데,
MySQL - ADO 연결 시에는 첫번째 테이블은 에러없이 실행되고 두번째 테이블을 열지 못하고
Project Test.exe raised exception class EOleException with message '테이블이 없습니다
'. Process stopped. Use Step or Run to continue.
위와 같은 에러 메시지를 띄웁니다.
Test Database에는 총 32개의 Table이 생성되어 있으며
확인해 보면 ltables 에는 분명 32개의 테이블이름이 제대로 입력되어 있습니다.
MySQL - ADO 연결 시에는 왜 안 되는 걸까요?
고수님들의 도움말 바랍니다.
새해 복 많이 받으시기를...
추신) MySQL - ADO 연결을 사용하고 계신 사용자분께는 이 소스가 에러없이 실행되는지 확인해 주시면 정말 감사하겠습니다.
|