C++

[C++] C++에서 sqlite3 사용하기

Let it out 2024. 1. 26. 09:52

SQLite를 C++ 에서 사용하려면 당연히 sqlite3.lib와 sqlite3.h을 추가해 줘야한다.
아래 링크에 순서대로 설명 되어있다.

 

- sqlite3 사용하기 전 준비 작업

1. Sqlite 설치하기

https://goodprogramer.tistory.com/14

 

[SQLite] SQLite 다운로드

1. SQLite 란? SQLite는 MySQL나 PostgreSQL와 같은 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다. 일반적인 RDBMS에 비해 대규모 작업

goodprogramer.tistory.com

 

 

 

2. sqlite3.h 파일 다운받기 and 다운받은 sqlite3.dll, sqlite3.def 파일로 sqlite3.lib 를 만들기

https://goodprogramer.tistory.com/35

 

[C++] sqlite3.lib 만들기

C++에서 SQLite를 사용하기 위해선 sqlite3.lib 파일이 있어야 한다. sqlite3.lib 파일은 SQLite 사이트에서 다운 받은 sqlite3.def, sqlite3.dll을 가지고 만든다. 한번 sqlite3.lib 을 만들어보자. 1. SQLite 사이트에

goodprogramer.tistory.com

 

 

3. 헤더 파일, lib 프로젝트에 추가하기

https://goodprogramer.tistory.com/37

 

[Visual Studio] Visual Studio 2022 C 언어/ C++ 외부 라이브러리 추가 총정리

- 시작하기 전 Visual stuido에서 라이브러리 추가 할 때 마다 구글링 해서 따라해보면 사람마다 말이 다르고 안될 때가 많다. 그래서 lib, dll, 외부 헤더파일까지 직접 다 추가해보고 정성스럽게 정

goodprogramer.tistory.com

 

 

 

- sqlite3 예제

sqlite3.h, sqlite3.lib 를 프로젝트에 추가했다면 아래 내용으로 기본적인 테이블 작성이 가능하다.

DB 연결 -> 테이블 생성 -> 데이터 insert를 작성했다.

#include <stdio.h>
#include <sqlite3.h> 
int Sqlite_Connect(sqlite3* db);
int Sqlite_Create(sqlite3* db);
int Sqlite_Insert(sqlite3* db);
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
    int i;
    for (i = 0; i < argc; i++) {
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return 0;
}

int main(int argc, char* argv[]) {
    sqlite3* db =0;
    if (Sqlite_Connect(db) == 0)
        return 0;
    if (Sqlite_Create(db) == 0)
        return 0;
    if (Sqlite_Insert(db) == 0)
        return 0;
    sqlite3_close(db);
}

int Sqlite_Connect(sqlite3* db)
{
    char* zErrMsg = 0;
    int rc;
    rc = sqlite3_open("test.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return 0;
    }
    else {
        fprintf(stderr, "Opened database successfully\n");
    }
}

int Sqlite_Create(sqlite3* db)
{
    char* zErrMsg = 0;
    int rc;
    const char* sql;
    /* Open database */
    rc = sqlite3_open("test.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return 0;
    }
    else {
        fprintf(stdout, "Opened database successfully\n");
    }
    /* Create SQL statement */
    sql = "CREATE TABLE COMPANY("  \
        "ID INT PRIMARY KEY     NOT NULL," \
        "NAME           TEXT    NOT NULL," \
        "AGE            INT     NOT NULL," \
        "ADDRESS        CHAR(50)," \
        "SALARY         REAL );";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }
    else {
        fprintf(stdout, "Table created successfully\n");
    }
}

int Sqlite_Insert(sqlite3* db)
{
    char* zErrMsg = 0;
    int rc;
    const char* sql;
    /* Open database */
    rc = sqlite3_open("test.db", &db);
    if (rc) {
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        return(0);
    }
    else {
        fprintf(stderr, "Opened database successfully\n");
    }
    /* Create SQL statement */
    sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  \
        "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " \
        "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "  \
        "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); "     \
        "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \
        "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" \
        "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \
        "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );";
    /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
    }
    else {
        fprintf(stdout, "Records created successfully\n");
    }
}

 

 

 

DB Browser를 실행 시켜 확인해보면 테이블이 만들어지고 데이터가 Insert 된 것을 확인 할 수 있다.

 

 

- 참조 링크

아래 링크를 참조 했다. 

링크에 다른 예제도 많으니 참고해서 필요한 기능을 가져다 쓰면 된다.

https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm

 

SQLite - C/C++

SQLite C C++ - In this chapter, you will learn how to use SQLite in C/C++ programs.

www.tutorialspoint.com

 

 

- 전체 소스 다운

https://drive.google.com/file/d/10Fyx65OWsWUofveZFSbSmNsvPC6qFCYh/view?usp=sharing

 

SQLite_Example.zip

 

drive.google.com

 

 

 

 

 

 

반응형

'C++' 카테고리의 다른 글

[C++] 클래스 객체 정적 할당, 동적 할당 하는 법  (0) 2024.01.30
[C++] C++ sqlite3.lib 만들기  (0) 2024.01.26
[C++] const (콘스트) 란?  (0) 2024.01.26
[C++ ] 2차원 포인터 정리  (0) 2024.01.25
[C++ ] 1차원 포인터 정리  (0) 2024.01.25