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

c와 mariadb 연결하는 방법 및 예제 2 - select, insert, delete

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

++++

mysql_free_result(sql_result) 을 마지막에 쓰자

ANIMAL 테이블 구조

 

 

CREATE TABLE ANIMAL 

( id INT PRIMARY KEY, 

name VARCHAR(20) );



main.c 

#include "chun.h"

void myselect(MYSQL *conn_ptr, char* query);
void myinsert(MYSQL *conn_ptr, char* query);
void mydelete(MYSQL *conn_ptr, char* query);
int main(int argc, char** argv)
{
        MYSQL *conn_ptr;

        // db connect
        conn_ptr = db_init("IP", "ID", "PWD", "DATABASE");

        char query[1024];

        printf("----------Welcome SQL Mode---------\n");
        while(1)
        {
                printf("----------1. SELECT Mode-----------\n");
                printf("----------2. INSERT Mode-----------\n");
                printf("----------3. DELETE Mode-----------\n");
                printf("----------0. EXIT       -----------\n");

                printf("insert mode number : ");
                int node = 0 ;
                scanf("%d", &node);
                printf("%d\n",node);

                switch(node)
                {
                        case 1:
                                printf("######Welcome Select Mode######\n");
                                myselect(conn_ptr, query);
                                break;
                        case 2:
                                printf("######Welecome Insert Mode######\n");
                                myinsert(conn_ptr, query);
                                break;
                        case 3:
                                printf("######Welecome Delete Mode######\n");
                                mydelete(conn_ptr, query);
                                break;
                }
                if(node == 0)
                        break;
        }
        mysql_close(conn_ptr);
        return 0;
}

void myselect(MYSQL *conn_ptr, char* query)
{
        memset(query, 0x00, sizeof(query));
        sprintf(query, "SELECT * FROM ANIMAL;");

        MYSQL_RES *sql_result;
        MYSQL_ROW row;

        Animal animal[10];

        memset(animal, 0x00, sizeof(animal));
        mysql_query(conn_ptr, query); // query를 사용할때..select이든 뭐든
        sql_result = mysql_store_result(conn_ptr); // mysql실행시 결과를 저장

        int field = 0;
        field = mysql_num_fields(sql_result); // column의 개수를 받아온다.

        printf("field = %d\n", field);

        int data = 0;
        data = mysql_num_rows(sql_result); // 데이터의 총개수를 받아온다.
        printf("data = %d\n", data);

        /* row 하나씩 받아온다
                row[0] , row[1]은 각각 첫열 두번째열 데이터를 의미한다
        */
        int i = 0;
        while((row=mysql_fetch_row(sql_result))){ // row 하나씩 받아온다.
                animal[i].id = atoi(row[0]);
                memcpy(animal[i].name, row[1], sizeof(animal[i].name));
                i++;
        }
        mysql_free_result(sql_result)

        for(i=0 ; i < data ; i++)
                printf("%d, %s\n", animal[i].id, animal[i].name);
}

void mydelete(MYSQL *conn_ptr, char* query)
{
        memset(query, 0x00, sizeof(query));

        char name[20];
        memset(name, 0x00, sizeof(name));
        printf("input name = ");
        scanf("%s", &name);
        printf("your input data name = %s\n", name);

        sprintf(query, "DELETE FROM ANIMAL WHERE NAME='%s';", name);
        int check = 0;
        check = mysql_query(conn_ptr, query); // insert 함수 실행

        if(check == 0)
                printf("Success!!\n");
        else
                printf("Fail!! why? %s\n", mysql_error(conn_ptr));
}

void myinsert(MYSQL *conn_ptr, char* query)
{
        memset(query, 0x00, sizeof(query));

        int id = 0;
        char name[20];
        memset(name, 0x00, sizeof(name));
        printf("input id = ");
        scanf("%d", &id);
        printf("input name = ");
        scanf("%s", &name);
        printf("your input data id = %d, name = %s\n", id, name);
        sprintf(query, "INSERT INTO ANIMAL (id, name) VALUES (%d, '%s');", id, name);

        int check = 0;
        check = mysql_query(conn_ptr, query); // insert 함수 실행

        if(check == 0)
                printf("Success!!\n");
        else
                printf("Fail!! why? %s\n", mysql_error(conn_ptr));
}

 

참고했던 링크

https://m.blog.naver.com/PostView.nhn?blogId=dgsw102&logNo=221058030471&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://kldp.org/node/19316

728x90