|
^^
안녕하세요.
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 프로그램을 처음해 보는지라 모르는 거 투성이네요-_-
:
: 많은 도움 부탁드립니다.
: 미리 감사 드리며....
:
:
|