mysql_store_result(conn);
공식문서 링크
1. mysql_store_result( )
더보기
함수 원형
MYSQL_RES *mysql_store_result(MYSQL *mysql);
동작
- mysql_query로 실행한
- SELECT 실행 결과 집합(MYSQL_RES *, 2차원 테이블 형태의 데이터 집합) 받아옵니다.
- 결과 집합을 메모리로 복사하여, MYSQL_RES *로 참조합니다.
- 나중에 반복문으로 읽을 수 있게 만듭니다.
- 반드시 사용 후 mysql_free_result()로 해제해야 메모리 누수가 없습니다.
자료형/반환값
- MYSQL * mysql :
- 데이터베이스 연결을 나타내는 구조체 포인터
- 반환값 (MYSQL_RES *) :
- 성공 시 : SELECT 실행 결과 집합 을 가리키는 포인터 (MYSQL_RES *)
- 실패 시 : NULL (에러 메시지는 mysql_error(mysql)로 확인)
2.MYSQL_RES
더보기
1. 예시
// 2. 결과 집합 받기
MYSQL_RES *res = mysql_store_result(conn);
2. MYSQL_RES 예시
code | name | |
1 | Alice | alice@a.com |
2 | Bob | bob@b.com |
- 이렇게 2행 3열 결과를 MYSQL_RES가 담고 있으면
- 1번째 row : {"1", "Alice", "alice@a.com"}
- 2번째 row : {"2", "Bob", "bob@b.com"}
3. 구조
- MYSQL_RES는 SELECT 실행 결과 집합 (테이블, 2차원 배열 형태, 여러 행/열)을 메모리에 저장하고 관리하는 용도입니다.
→ 각 행(row)을 [문자열(char *)]의 배열로 저장합니다. - 각 행(row)은
→ 값을 [문자열(char *)]로 저장한 배열입니다. - 이후, mysql_fetch_row(), mysql_num_fields(), mysql_num_rows() 등 함수로 정보에 접근
3. mysql_store_result 예시
더보기
1. mysql_query( ), 쿼리 실행
// 1. 쿼리 실행
const char *query = "SELECT * FROM Members;";
if (mysql_query(conn, query)) {
// 에러 발생
fprintf(stderr, "쿼리 실행 실패: %s\n", mysql_error(conn));
// 추가 에러 처리
} else {
// 쿼리 성공, 결과 집합을 받아야 한다면 다음 단계로...
}
- 실패 시, mysql_error(conn)으로 에러 메시지 확인
2. mysql_store_result( ), 결과 집합 받기
MYSQL_RES *res = mysql_store_result(conn);