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
[58707] ADO 사용시 에러문제
이인호 [antiwindog] 1407 읽음    2009-10-05 13:57
Access db에 값을 넣기 위하여 다음과 같이 했습니다.

AnsiStirng sql;

sql = "INSERT INTO table (a, b, c, d) VALUES(1,2,3,4)";

/* case 1 */
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(sql);
ADOQuery->ExecSQL();

/* case 2 */
ADOCommand->CommandText = sql;
ADOCommand->CommandType = cmdText;
ADOCommand->Execute();

위와 같은 SQL문을 실행하기 위해 ,1번 처럼 TADOQuery 로 실행시 ExecSQL 실행에서 프로그램이 뻗습니다.
2번 처럼 TADOCommand로 실행을 하게 되면 아무 문제 없이 동작을 합니다.
1번의 경우 뻗기전 1회성이고 2번의 경우는 이벤트 발생시 마다 계속 저장되는 차이는 있지만 두 경우 모두 데이터는 빠지거나 틀린 값 없이 정상적으로 Table에 저장이 됩니다.

1번의 경우 프로퍼티 창에서 동일한 SQL 구문을 놓고, Active->true로 설정하면 commandtext does not return a result set  에러가 발생합니다. 하지만, 역시 Table에는 정상적으로 저장이 되구요.

질문 1
TADOQuery 실행시 ExecSQL 실행과정에서 뻗는 이유가 궁금합니다.

질문 2
TADOQurey와 TADOCommand 두 콤포넌트의 어떤 차이 때문에 위와 같은 결과가 나타나는지요? 두 콤퍼넌트의 장단점도 알려주세요.

+ -

관련 글 리스트
58707 ADO 사용시 에러문제 이인호 1407 2009/10/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.