|
1. sql문에서 테이블 이름인 test 위치에 경우에 따라 다른 테이블 이름이 들어가게 하겠다는 말인지
2. 쿼리의 결과 레코드 세트에 테이블 이름이 포함되어 있는데 이 것을 읽고 싶다는 것인지
3. 그것도 아니면 이미 sql문이 제시되어 있는 상태에서 sql문 내부의 테이블 이름을 추출하겠다는 것인지
좀 모호하네요.
만약 1의 경우라면
String tableName="test";
String sql = "select * from " + tableName + " where no=\'120\'";
하면 됩니다.
물론 아래와 같이도 할 수 있습니다.
void CallingMethod()
{
String tableName="test";
QueryMethod(tableName);
}
void QueryMethod(const String &table)
{
String sql = "select * from " + table + " where no=\'120\'";
.
.
.
}
2의 경우라면 여타 필드 액세스하듯이 하면 되구요.
3의 경우라면
String sql="Select * From table1 Where no=120";
String lwrsql = sql.LowerCase();
String tableName="";
int idx1, idx2;
idx1 = lwrsql.Pos("from");
if(idx1>0)
{
idx2 = lwrsql.Pos("where");
if(idx2<=0) idx2=lwrsql.Length()+1;
if(idx2>idx1)
{
tableName=sql.SubString(idx1+4,idx2-(idx1+4)).Trim();
}
}
만약 아래와 같이 sql문 하나에 여러개의 테이블이 from절에 들어간다면
String sql="Select * From table1, table2 Where no=120";
위의 결과를 다시 ','로 자르면 됩니다.
그런데 sql문에 테이블 이름이 들어가는 곳은 지금의 예와같이 간단한 경우만 있는 것이 아닙니다.
join문도 있고 in도 있고 복잡합니다.
초보++ 님이 쓰신 글 :
: 유동적인 테이블과 SQL문을 그리드로 뿌리고 있습니다...
: 여기서 테이블 명을 변수로 받아오고 싶은데...
: 문자열 조작이 쉽지가 않네요...
:
: 만약 다음의 쿼리문에서...
: select * from test
: select no,name from test where name='홍길동'
: select * from test where no='12'
:
: select * from test1
: select * from test where no='120'
:
:
: 여기서 test와 test1의 테이블 명을 변수로 받아오고 싶습니다...
:
: 문자열 자르기로 잘라봐도 유동적이니 결과을 제대로 받아올수가 없네요 ㅠ.ㅠ
:
: 고수님들의 해결 방법좀 부탁드립니다...
:
:
|