C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[13653] ADO에서 모든 테이블 목록을 가져오려면?
패패루 [peperu] 1088 읽음    2001-12-14 00:59
몇가지 질문을 같이 드리죠.
1. 하나의 커넥션으로 연결된 DB내의 모든 테이블 목록을 어떻게 가져오는가?
2. 그리고 각 테이블의 필드목록은 어떻게 가져오는가?
   테이블의 필드 목록은
   SELECT * FROM tablename WHERE false
   실행해서 필드를 죽 스캔하면 될 것 같은데요.. 좀 더 쌈박한 방법은 없는지..
3. 특정 쿼리문(SELECT)을 실행했을 때 어떤 필드들을 얻게 되는지 아는 방법은?
   예를 들어 SELECT table1.*, table2.* FROM table1, table2 WHERE table1.sn=table2.psn
   이라는 쿼리문을 실행하면 결과로 어떤 필드들을 얻게 되는지.. 이 경우 table1의 모든
   필드와 table2의 모든 필드가 되겠죠. 물론 WHERE에 and false같은거 하나 넣어두면
   레코드는 0개가 추출될거고, 데이터셋의 모든 필드를 스캔하는 방법이 있긴하지만
   쿼리문 자체를 사용자가 입력하게끔 하는 경우라면 사용하기가 여의치 않은 것 같습니다.
   좀 위험하겠죠..
   또한, TOP어쩌구를 써서 무조건 1개 레코드만 뽑아오게 할 수 있겠지만 이 역시 SQL서버의
   종류에 따라 첫 1개 레코드를 뽑아오는 명령을 지원하기도 하고 안하기도 하고..
   지원한다고 해도 서로 문법이 다르고..
   뭔가 방법이 없을까요? 이거 하나 하려고 SQL문 파서를 만드는것도 바보짓이고..

3번 질문에 대해 약간 보충을 한다면,
이런 경우를 생각해보죠.
사용자가 SELECT * FROM table이라는 쿼리를 입력했습니다.
프로그램에서는 이 쿼리 결과로 얻어지는 필드명을 사용해야 합니다.
그런데, 그 테이블의 레코드가 100만개입니다.
게다가 원격으로 꽤 먼곳에 있는 DB입니다.
이 쿼리가 제대로 된 것인지 확인하고, 또 결과로 어떤 필드들이 날아오는지 채크하기 위해
마냥 실행한다면.. 아마 몇시간 기다려야겠죠.
그쪽 DB서버도 부하가 많이 걸릴건 당연하구요.
TADOQuery의 MaxRecord였나요? 하여간 비스무리한 프라퍼티 값을 1로 제한해도 소용 없는 것
같더라구요. 제가 해 봤을땐.
뭔가 속시원한 방법이 있다면 좀 알려주시면 고맙겠습니다.

+ -

관련 글 리스트
13653 ADO에서 모든 테이블 목록을 가져오려면? 패패루 1088 2001/12/14
13659     살짝 입맛만 보여준다면.... 에보니.^ㅅ^ 1150 2001/12/14
13677         그런데, 약간의 문제가 있어보입니다. 패패루 775 2001/12/14
13668         Re: ^^ 고맙습니다. 패패루 739 2001/12/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.