2008/07/24
C++ 코드로 SQLite v3 질의결과 row 단위로 컨트롤하기
정확히 어느 버전부터 지원을 하는지는 모르겠지만 sqlite v3 이후부터는 sqlite3_exec 에 의한 질의방식 외에 보다 더 자세히 데이터를 컨트롤 할 수 있는 방법을 지원한다.
방법은 아래 함수를 이용해서 할 수 있다.
* sqlite3_prepare()
* sqlite3_step()
* sqlite3_column()
* sqlite3_finalize()
prepared statement 를 이용하는 방법으로 sqlite3_prepare 함수로 prepared statement 를 수행하고 sqlite3_step 함수를 이용해서 한 row씩 진행하면서 sqlite3_column 함수를 이용하여 각각의 column 에 접근하는 방법이다. 모든 수행을 마치고 sqlite3_finalize 로 마무리 하면 된다.
데모프로젝트
Original Post : http://neodreamer-dev.tistory.com/129
방법은 아래 함수를 이용해서 할 수 있다.
* sqlite3_prepare()
* sqlite3_step()
* sqlite3_column()
* sqlite3_finalize()
prepared statement 를 이용하는 방법으로 sqlite3_prepare 함수로 prepared statement 를 수행하고 sqlite3_step 함수를 이용해서 한 row씩 진행하면서 sqlite3_column 함수를 이용하여 각각의 column 에 접근하는 방법이다. 모든 수행을 마치고 sqlite3_finalize 로 마무리 하면 된다.
sqlite3* pSQLite3 = NULL;
sqlite3_stmt* pStmt = NULL;
int rst = sqlite3_open( "test.db", &pSQLite3 );
if ( rst )
{
TRACE( "Can't open database: %s\n", sqlite3_errmsg( pSQLite3 ));
sqlite3_close( pSQLite3 );
pSQLite3 = NULL;
}
else
{
const char szQuery[1024] = "SELECT * FROM MEMBER";
const char* szChar;
if ( sqlite3_prepare( pSQLite3, szQuery, 1024, &pStmt, &szChar )
== SQLITE_OK )
{
int nRow = sqlite3_data_count( pStmt );
TRACE( "sqlite3_data_count() : %d\n", nRow );
int nCol = sqlite3_column_count( pStmt );
TRACE( "sqlite3_column_count() : %d\n", nCol );
const char* col1name = sqlite3_column_name( pStmt, 0 );
const char* col2name = sqlite3_column_name( pStmt, 1 );
int nRowCnt = 0;
while ( sqlite3_step( pStmt ) == SQLITE_ROW )
{
++nRowCnt;
const unsigned char* col1 = sqlite3_column_text( pStmt, 0 );
const unsigned char* col2 = sqlite3_column_text( pStmt, 1 );
TRACE( "ROW %d: %s => %s, %s => %s \n",
nRowCnt, col1name, col1, col2name, col2 );
}
}
sqlite3_finalize( pStmt );
sqlite3_close( pSQLite3 );
pSQLite3 = NULL;
}
데모프로젝트
Original Post : http://neodreamer-dev.tistory.com/129
Labels:
C++
,
MFC
,
prepared statement
,
SQLite
,
TistoryOldPost
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment