sprintf 란 함수를 사용하시면 됩니다.
이것은 출력을 인자로 받은 버퍼에 담아 주는 것이죠.
보통 제가 mysql에 억세스 할때 query 로 사용할 스트링은 버퍼로 만듭니다.
예를 들어 이런 식으로 하죠.
char szQuery[ 적당히 큰 크기.. 보통 1024bytes 정도 ];
그 다음에 말씀하신 경우라면 이렇게 합니다.
즉, pig 라는 아이디가 글어간 것을 얻고 싶다면
sprintf(szQuery, "SELECT * FROM exam where id='%s'", "pig");
그러면 szQuery 안에는 결과적으로 "SELECT * FROM exam where id='pig'"
라고 들어가게 되죠. 혹시 참고가 될까 해서 제가 만들어서 사용하는
MySQL 클래스를 드립니다. (MySQL 용 C++ API 는 템플릿들 때문에 컴파일
속도가 장난이 아니죠.. 쓰기는 편하지만. 그래서 저는 그냥 C API 로 자체
클래스를 만들어 사용하고 있습니다.)
다음은 csql.h 부분입니다.
#include "mysql.h"
//
// csql.h
//
// MySQL query class using MySQL C API
//
// Written by Diode
//
#define ERROR_NOERROR 0
#define ERROR_NOSUCHUSER -1
#define ERROR_MYSQLCONNECT -2
#define ERROR_MYSQLDBSELECT -3
#define ERROR_MYSQLQUERY -4
#define ERROR_MYSQLSTORE -5
#define ERROR_MYSQLEOF -6
class CSQL
{
public:
CSQL() { res = NULL; };
~CSQL()
{
if(res) mysql_free_result(res);
mysql_close(&mysql);
};
int Connect(char szHost[], char szUser[], char szPassword[], char szDB[]);
int Query(char szQuery[]);
int Store(void);
int Count(void)
{
if(res == NULL) return 0;
return res->row_count;
}
MYSQL_ROW Fetch(void);
private:
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
};
다음은 csql.cpp 입니다.
#include "mysql.h"
//
// csql.cpp
//
// MySQL query class using MySQL C API
//
// Written by Diode
//
int CSQL :: Connect(char szHost[], char szUser[], char szPassword[], char szDB[])
{
if(!(mysql_connect(&mysql,szHost, szUser, szPassword)))
{
return ERROR_MYSQLCONNECT;
}
if(mysql_select_db(&mysql, szDB))
{
return ERROR_MYSQLDBSELECT;
}
return ERROR_NOERROR;
}
int CSQL :: Query(char szQuery[])
{
if(mysql_query(&mysql, szQuery))
{
return ERROR_MYSQLQUERY;
}
return ERROR_NOERROR;
}
int CSQL :: Store(void)
{
if(!(res = mysql_store_result(&mysql)))
{
return ERROR_MYSQLSTORE;
}
return ERROR_NOERROR;
}
MYSQL_ROW CSQL :: Fetch(void)
{
row = mysql_fetch_row(res);
if(!mysql_eof(res))
{
return NULL;
}
return (row);
}
사용은 간단합니다. 간단한 예를 보면..
char szQuery[SMALL_BUFSIZE];
CSQL db;
MYSQL_ROW row;
db.Connect("localhost", "test", "사용아이디", "패스워드");
sprintf(szQuery, "SELECT * FROM exam Where id = '%s'", szID);
db.Query(szQuery);
db.Store();
row = db.Fetch();
그리고 이 다음엔 row 에서 원하는 값을 얻을 수 있구요.. 물론 null 일 수도 있으니 체크를 잘 하셔야 합니다. 위에서 에러처리는 다 생략이 됬으니 그부분도 신경 쓰셔야 하구요..
그럼..
|