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
[5610] Re:DB 프로그램 관련.... 여러가지 궁금증
Orun [] 2745 읽음    2001-02-21 08:53
^^
안녕하세요.

1.프로그램에서 필요한 모든 query를 위해 일일이 TQuery와 TDatasource의 한 쌍을
main form위  올려 놓아야 합니까? 즉 10개의 서로 다른 Query가 필요하면
10쌍의 TQuery와 TDatasource를 올려 놓아햐 합니까?

-> 결과값을 보기위해서 항상 nabigator나 grid를 사용하는건 아닙니다.
말씀하신 질문은 TQuery를 동적으로 할당해서 필요한 결과를 얻고,
결과를 얻은 뒤 TQuery 를 해제하는 방법을 사용하시면 됩니다.
폼위에 컴포넌트를 올리실 필요없이 헤드파일에 다음의 헤더를 추가하시고
예제를 참고하세요.

#include <Db.hpp>
#include <DBTables.hpp>

//---------------------------------
1)필요할 때 Query문 실행(update,insert,delete)
TQuery      *pQuery;
AnsiString  asSQL;

pQuery = new TQuery(NULL);
pQuery->DatabaseName = "MYSQLDB";
pQuery->SQL->Clear();
asSQL = "insert locationtbl ( l_aspcompany, l_phone, l_etc ) values ('a','b','c')";
pQuery->SQL->Add( asSQL );
try {
    pQuery->ExecSQL();
}
catch(...) {
    delete pQuery;
    return;
}
delete pQuery;

//---------------------------------
2)DB 와 연결후 데이터 처리 (select)
TQuery      *pQuery;
AnsiString  asPhone, asLocationCheck;    

pQuery = new TQuery(NULL);
pQuery->DatabaseName = "MYSQLDB";
pQuery->SQL->Clear();
pQuery->SQL->Add("select * from registertbl");

try {
    pQuery->Open();
    pQuery->First();
    while (!pQuery->Eof)
       asPhone = pQuery->Fields->Fields[0]->AsString;  // 첫번째 필드
       asLocationCheck = pQuery->Fields->Fields[1]->AsString; // 두번째 필드
       .
       .
       .
       pQuery->Next();
    }
}

catch(...) {
    pQuery->Close();
    delete pQuery;
    return;
}

pQuery->Close();
delete pQuery;

2. parameter를 설정하는 방법은요?
TQuery의 params에 setting해 보았지만,되지 않더군요..
(parameter로 들어갈 값은 run-time에 당연히 결정 되겠죠)

-> 1번 답변 처럼하시면 parameter를 사용하실 필요는 없으실 것 같습니다.

 
3.프로그램을 실행 할때마다, 또 TQuery에 Build SQL 할때 마다
계속 id와 passwd를 묻거든요 db를 등록할때 물론 id, passwd이런 것들을
없이 했는데도 말이죠(ok button을 누르면 그냥 다음 단계로 넘어 가지만
일일이 이렇게 하기가 귀찮아서요...)

-> [3513  /  Re:다시 질문이여.. ㅠㅠ] 를 참고하세요.

4. 이 모든 것들을 사용하지 않고, 가장 편하게 SQL문을 처리하고
  결과 값을 받아와 특정 변수에 할당 할 수 있는 더 좋은 방법이 있습니까?

-> 이것도 해결이 되리라봅니다. 제가 사용해본 경험으로는 1번질문의 답변처럼
사용하시면, 동적으로 생성해서 필요할 때 사용하시고, 동기화해서 사용시에는
필요시 생성 후 종료할 때 삭제하시면 될것 같습니다.


jeroh 님이 쓰신 글 :
: 저는 지금 builder를 이용해 database관련  프로그램을 짜고 있는데요...
: navigator나 grid같은 것들을 전혀 이용하지 않으려 합니다.

: main form 위에 TQuery와 TDataSource를 올려 놓고, Query를 생성해서

: String info;

: for(int i = 0; i < Query1->FieldCount; i++)
:   info = Info + Query1->Fields[i]->FieldName + "="+ Query1->FieldByName(Query1->Fields[i]->FieldName)->AsString+ "    ";

: 뭐.. 이런식으로 data를 가져오려고 합니다.

: Query->SQL->Add();.....
: Query->ExecSQL();

: 이런 함수를 사용하면 select또는 update되어진 결과 값들을 보기 위해선,
: 항상 grid나 navigator등을 사용할 수 밖에 없더군요
: (확실이 그런가요?,,,, 제가 본 모든 예제 코드들은 다 그러하던데...)

: 근데, 전 앞서 말했다시피 이런것들을 사용하지 않고 Query 실행한 값들을
: 특정 변수에 할당 받고 싶거든요...
: (자바를 생각하시면 편하겠죠... 자바에서 Resultset에 결과를 받아 오는 것처럼)

: 그래서 궁금한 점은.

: 1.프로그램에서 필요한 모든 query를 위해 일일이 TQuery와 TDatasource의 한 쌍을 main form위에 올려 놓아야 합니까? 즉 10개의 서로 다른 Query가 필요하면
: 10쌍의 TQuery와 TDatasource를 올려 놓아햐 합니까?

: 2. parameter를 설정하는 방법은요?
: TQuery의 params에 setting해 보았지만,되지 않더군요..
: (parameter로 들어갈 값은 run-time에 당연히 결정 되겠죠)

: 3.프로그램을 실행 할때마다, 또 TQuery에 Build SQL 할때 마다
: 계속 id와 passwd를 묻거든요 db를 등록할때 물론 id, passwd이런 것들을
: 없이 했는데도 말이죠(ok button을 누르면 그냥 다음 단계로 넘어 가지만
: 일일이 이렇게 하기가 귀찮아서요...)

: 4. 이 모든 것들을 사용하지 않고, 가장 편하게 SQL문을 처리하고
: 결과 값을 받아와 특정 변수에 할당 할 수 있는 더 좋은 방법이 있습니까?

: 이상이 질문이었습니다.
: builder에서 DB 프로그램을 처음해 보는지라 모르는 거 투성이네요-_-

: 많은 도움 부탁드립니다.
: 미리 감사 드리며....

:

+ -

관련 글 리스트
5609 DB 프로그램 관련.... 여러가지 궁금증 jeroh 2545 2001/02/20
5610     Re:DB 프로그램 관련.... 여러가지 궁금증 Orun 2745 2001/02/21
5619         Re:Re:DB 프로그램 관련.... 여러가지 궁금증 jeroh 2640 2001/02/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.