일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 아두이노 핀
- 웹 프로그래밍
- 데이터베이스
- Codility
- ubuntu
- vm
- 아두이노 프로미니
- 아두이노
- Arduino pin
- Arduino
- 아두이노 wifi
- MySQL
- 아두이노 핀맵
- 아두이노 pro mini
- 아두이노 와이파이
- mysql c
- 아두이노 핀 맵
- wifi멀티탭
- mysql api
- database
- Virtual Box
- html input
- Arduino pin map
- 알고리즘
- web
- HTML
- Mysql c API
- Raspberry Pi
- 라즈베리파이
- 코딜리티
- Today
- Total
offfff
[MySQL C API] 9. 데이터베이스에 저장된 이미지 가져오기(Selecting images from MySQL database) 본문
[MySQL C API] 9. 데이터베이스에 저장된 이미지 가져오기(Selecting images from MySQL database)
offfff 2016. 8. 19. 09:001. 소스코드
8번 글에서 데이터베이스에 저장한 이미지를 불러오는 소스코드이다.
#include <my_global.h>
#include <mysql.h>
void finish_with_error(MYSQL *con)
{
fprintf(stderr, "%s \n", mysql_error(con));
mysql_close(con);
exit(1);
}
int main(int argc, char **argv)
{
// write binary 모드로 새로운 이미지를 파일을 만듦
FILE *fp = fopen("picture2.jpg", "wb");
if (fp == NULL) {
fprintf(stderr, "cannot open image file \n");
exit(1);
}
MYSQL *con = mysql_init(NULL);
if(con == NULL) {
fprintf(stderr, "mysql_init() failed \n");
exit(1);
}
if (mysql_real_connect(con, "localhost", "user01", "1q2w3e!". "testdb", 0, NULL, 0) == NULL)
{
finish_with_error(con);
}
// Images 테이블 Id 1번 데이터를 SELECT 한다.
if (mysql_query(con, "SELECT Data FROM Images WHERE Id=1"))
{
finish_with_error(con);
}
// SELECT 결과를 MYSQL_RES에 저장
MYSQL_RES *result = mysql_store_result(con);
if (result == NULL) {
finish_with_error(con);
}
// row 에는 raw데이터가 저장되게 됨
MYSQL_ROW row = mysql_fetch_row(result);
// 받아온 이미지데이터의 길이를 알아낸다
unsigned long *lengths = mysql_fetch_lengths(result);
if (lengths == NULL) {
finish_with_error(con);
}
// 파일에 이미지데이터를 데이터의 길이만큼 옮겨 저장
fwrite(row[0], lengths[0], 1, fp);
if (ferror(fp))
{
fprintf(stderr, "fwrite() failed \n");
mysql_free_result(result);
mysql_close(con);
exit(1);
}
int r = fclose(fp);
if (r == EOF) {
fprintf(stderr, "cannot close file handler \n");
}
mysql_free_result(result);
mysql_close(con);
exit(0);
}
아래 링크를 참고하여 번역 및 수정함
http://zetcode.com/db/mysqlc/
'프로그래밍' 카테고리의 다른 글
HTML 기본 예제 (0) | 2016.08.21 |
---|---|
HTML 소개(HTML Introduction) (0) | 2016.08.20 |
[MySQL C API] 8. 데이터베이스에 이미지 저장하기(Inserting images into MySQL database) (1) | 2016.08.18 |
[MySQL C API] 7. 한 쿼리로 다중구문 수행하기(Multiple statements) (0) | 2016.08.17 |
[MySQL C API] 6. 컬럼 이름 가져오기(Column header) (0) | 2016.08.16 |