25.07.12 학습일지 / mySQL, C

2025. 7. 29. 18:35·LMS 7/개발일지

C - mySQL 관련 함수

1. mysql_init()

> mysql 구조체 초기화 함수

1) 매개변수

> MYSQL *mysql : NULL을 넘김

2) 반환

> 성공시 MYSQL*, 실패시 NULL


2. mysql_real_connect()

> mysql 서버 실제 연결함수

1) 매개변수

> MYSQL *conn : mysql_init() 으로 초기화된 MYSQL 포인터

> host : MYSQL 서버 주소("localhost", "127.0.0.1")

> user : 사용자 계정

> passwd : 사용자 비밀번호

> db : 데이터베이스 이름

> port : MYSQL 서버포트(3306)

> unix_socekt : 유닉스 소켓 파일 경로

> client_flag : 클라이언트 옵션

2) 반환

> 성공시 MYSQL*, 실패시 NULL


3. mysql_query()

> mysql 쿼리에서 실행할 문장 작성함수

1) 매개변수

> MYSQL* connection : mysql_init() 또는 mysql_real_connect()로 생성된 MYSQL 포인터

> const char* query: 실행할 SQL 문장

2) 반환

> 성공시 0, 실패시 0이외의 값


4. mysql_store_result()

> 결과 전체를 메모리에 저장하는 함수

1) 매개변수

> MYSQL* connection : mysql_init() 또는 mysql_real_connect()로 생성된 MYSQL 포인터

2) 반환

> 성공시 MYSQL_RES*(결과 테이블 포인터), 실패시 NULL


5. mysql_fetch_row()

> mysql_sotre_result()를 통해 저장된 결과에서 한 줄씩 꺼내오는 함수

1) 매개변수

> MYSQL_RES *result : mysql_store_result()가 성공시 반환 값

2) 반환

> 성공시 다음 행 데이터, 실패시 NULL


6. mysql_free_result()

> mysql_store_result()로 인해 할당된 메모리를 해제하는 함수

1) 매개변수

> MYSQL_RES *result : 위와 같음


7. mysql_close()

> mysql 서버 연결 종료함수

1) 매개변수

> MYSQL *conn : mysql_init() 또는 mysql_real_connect()로 생성된 MYSQL 포인터


 

INSERT 함수(구조체 정의 기반)

1) 구조체 정의(Member)

typedef struct { char id[20]; char name[50]; int age; } Member;

2) insert_member_struct, 목적함수

void insert_member_struct(MYSQL *conn, Member m) { // 문자열 임시 저장 공간 char query[256]; // INSERT 쿼리 생성 snprintf(query, sizeof(query), "INSERT INTO members (id, name, age) VALUES ('%s', '%s', %d)", m.id, m.name, m.age); // 쿼리 실행 if (mysql_query(conn, query)) { fprintf(stderr, "INSERT 오류: %s\n", mysql_error(conn)); } else { printf("회원 정보가 성공적으로 삽입되었습니다.\n"); } }

3) 메인함수

int main() { // mysql 구조체 초기화 MYSQL *conn = mysql_init(NULL); // mysql 실제 연결 mysql_real_connect(conn, "localhost", "root", "password", "testdb", 3306, NULL, 0); // 구조체에 담기 Member new_member; strcpy(new_member.id, "user123"); strcpy(new_member.name, "홍길동"); new_member.age = 25; // insert 함수 호출 insert_member_struct(conn, new_member); // mysql 서버 닫기 mysql_close(conn); return 0; }

 

SELECT 함수(구조체 정의 기반)

1) 구조체 정의(Member)

> 위와 같음

​

2) select_all_member, 목적함수

#include <mysql/mysql.h> #include <stdio.h> void select_all_member(MYSQL *conn) { // SELECT 쿼리 저장 후 실행 const char *query = "SELECT id, name, age FROM members"; if (mysql_query(conn, query)) { fprintf(stderr, "SELECT 오류: %s\n", mysql_error(conn)); return; } // SELECT 결과를 저장 MYSQL_RES *result = mysql_store_result(conn); if (result == NULL) { fprintf(stderr, "결과 저장 실패: %s\n", mysql_error(conn)); return; } // 저장된 결과를 한 줄씩 처리 MYSQL_ROW row; printf("=== 회원 목록 ===\n"); while ((row = mysql_fetch_row(result))) { // row[0] → id, row[1] → name, row[2] → age printf("ID: %s | 이름: %s | 나이: %s\n", row[0], row[1], row[2]); } // 결과 메모리 해제 mysql_free_result(result); }

3) 메인함수

int main() { // mysql 구조체 초기화 MYSQL *conn = mysql_init(NULL); // mysql 실제 연결 // if (mysql_real_connect(conn, "localhost", "root", "password", "testdb", 3306, NULL, 0)) { printf("MySQL 연결 성공!\n"); // select 함수 호출 select_all_member(conn); // mysql 서버 닫기 mysql_close(conn); } else { fprintf(stderr, "MySQL 연결 실패: %s\n", mysql_error(conn)); } return 0; }

 

UPDATE 함수(구조체 정의 기반)

1) 구조체 정의(Member)

typedef struct { char id[20]; char password[100]; char name[50]; int age; } Member;

​

2) update_member_pw, 목적함수

void update_member_pw(MYSQL *conn, Member m) { // UPDATE 쿼리 작성 char query[256]; snprintf(query, sizeof(query), "UPDATE members SET password = '%s' WHERE id = '%s'", m.password, m.id); // 쿼리 실행 if (mysql_query(conn, query)) { fprintf(stderr, "비밀번호 변경 실패: %s\n", mysql_error(conn)); } else { printf("비밀번호가 변경되었습니다.\n"); } }

3) 메인함수

#include <mysql/mysql.h> #include <stdio.h> #include <string.h> int main() { // mysql 구조체 초기화 MYSQL *conn = mysql_init(NULL); // mysql 실제 연결 if (!mysql_real_connect(conn, "localhost", "root", "password", "testdb", 3306, NULL, 0) { fprintf(stderr, "MySQL 연결 실패: %s\n", mysql_error(conn)); mysql_close(conn); return 1; } // 구조체 선언 및 변경할 값 설정 Member m; strcpy(m.id, "user123"); strcpy(m.password, "newpass456"); // 비밀번호 업데이트 함수 호출 update_member_pw_from_struct(conn, m); // mysql 서버 닫기 mysql_close(conn); return 0; }

DELETE 함수(구조체 정의 기반)

1) 구조체 정의(Member)

typedef struct { char id[20]; char password[100]; char name[50]; int age; } Member;

2) delete_member, 목적함수

void delete_member(MYSQL *conn, Member m) { char query[256]; // 회원 ID를 기반으로 삭제 쿼리 작성 snprintf(query, sizeof(query), "DELETE FROM members WHERE id = '%s'", m.id); // 쿼리 실행 if (mysql_query(conn, query)) { fprintf(stderr, "회원 삭제 실패: %s\n", mysql_error(conn)); } else { printf("회원이 성공적으로 삭제되었습니다.\n"); } }

3) 메인함수

int main() { // mysql 구조체 초기화 MYSQL *conn = mysql_init(NULL); // mysql 실제 연결 if (!mysql_real_connect(conn, "localhost", "root", "password", "testdb", 3306, NULL, 0) { fprintf(stderr, "MySQL 연결 실패: %s\n", mysql_error(conn)); // mysql 서버 닫기 mysql_close(conn); return 1; } // 구조체 선언 및 삭제할 값 설정 Member m; strcpy(m.id, "user123"); // 삭제 대상 ID // 삭제 함수 호출 delete_member(conn, m); // mysql 서버 닫기 mysql_close(conn); return 0; }

'LMS 7 > 개발일지' 카테고리의 다른 글

2025.07.15 개발일지 [채팅 프로그램 5팀 / 테이블 명세서 / ERD]  (0) 2025.07.29
25.07.14 개발일지 / 멀티스레드를 통한 채팅프로그램 구상  (2) 2025.07.29
25.07.10 학습개발일지 / mySQL  (0) 2025.07.28
25.07.08 학습개발일지 / thread  (5) 2025.07.28
25.07.03 학습일지  (0) 2025.07.28
'LMS 7/개발일지' 카테고리의 다른 글
  • 2025.07.15 개발일지 [채팅 프로그램 5팀 / 테이블 명세서 / ERD]
  • 25.07.14 개발일지 / 멀티스레드를 통한 채팅프로그램 구상
  • 25.07.10 학습개발일지 / mySQL
  • 25.07.08 학습개발일지 / thread
m_Dev
m_Dev
  • m_Dev
    m_Dev
    m_Dev
  • 전체
    오늘
    어제
    • 분류 전체보기
      • MAIN STUDY
        • 정보보안
        • 빅데이터
        • 정보처리
        • 컴퓨터 구조
        • 기타
      • JOB
        • Study
        • Project
      • LMS 7
        • 개발일지
      • FRAMEWORK
        • Qt
        • MFC
        • Winform
        • WPF
        • MAUI
      • NETWORK
        • Study
        • Assignment
      • PYTHON
        • Set
        • Study
        • Assignment
        • Project
      • C
        • Set
        • Study
        • Assignment
        • Project
      • C++
        • Set
        • Study
        • Assignment
        • Project
      • C#
        • Set
        • Study
        • Assignment
        • Project
      • DATABASE
        • MySQL
        • SQLite
      • IDE
        • VisualStudioCode
        • VisualStudio
        • Pycharm
        • Colab
      • 기타
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
m_Dev
25.07.12 학습일지 / mySQL, C
상단으로

티스토리툴바