|
친절하고 자세한 답변 감사드립니다.
많은 도움이 되었어요...
진작에 여기를 찾을껄 하는 생각이 드는 군요.
물론, 답답해 하면서 공부도 많이 했지만요...
다시 한번 감사드려요^^
Orun 님이 쓰신 글 :
: ^^
: 안녕하세요.
:
: 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 프로그램을 처음해 보는지라 모르는 거 투성이네요-_-
: :
: : 많은 도움 부탁드립니다.
: : 미리 감사 드리며....
: :
: :
|