본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

UNIX C, MariaDB PROCEDURE(프로시저) 2탄

by 주용사 2023. 1. 8.
728x90

db_conn.c // 여기서 주목해야할 점은 mysql_real_connect에서 마지막 CLIENT_MULTI_STATEMENTS 부분이다. 아래 링크를 읽어보면 알겠지만 두가지 옵션 중 젤 상위옵션 같다.(쓰는 용도가 다르다면 할말없다.)

MYSQL *db_init(char *ip, char *user, char *pw, char *db)
{
    conn_ptr = mysql_init(NULL);

    if(!conn_ptr)
    {
        printf("error");
        exit(0);
    }

    conn_ptr = mysql_real_connect(conn_ptr, ip, user, pw, db, 50000, NULL, CLIENT_MULTI_STATEMENTS);
    if(!conn_ptr)
    {
        printf("cannot connect : %s\n", mysql_error(conn_ptr));
    }

    mysql_set_character_set(conn_ptr, "utf8");

    return conn_ptr;
}
​

main.c

#include "changjo.h"

int main(int argc, char** argv)
{
    MYSQL *conn_ptr;

    MYSQL_RES *sql_result;
    MYSQL_ROW row;

    conn_ptr = db_init("ip", "id", "pwd", "database");
    char query[1024];

    sprintf(query, "CALL PR1()"); // 미리 생성해놓은 프로시저 호출

    int check = 0;
    mysql_query(conn_ptr, query);
    sql_result = mysql_store_result(conn_ptr);

    while((row=mysql_fetch_row(sql_result)))
    {
        printf("[%s] [%s] [%s]\n", row[0], row[1], row[2]);
    }

    mysql_free_result(sql_result);

    return 0;
}

a.out

 
728x90