[C++] C++에서 SQLite 사용하기
SQLite를 C++ 과 연동해서 사용하는 방법을 알아 보자.
본문은 코딩하는 방법을 다룰 것이므로
이전 내용은 아래 링크에 순서대로 설명 되어있다.
Sqlite 설치하기
https://skypirateking.blogspot.com/2022/08/sqlite.html
헤더 파일, dll 설치/ lib 파일 만들기
https://skypirateking.blogspot.com/2023/05/sqlite3-sqlite-c-lib.html
헤더 파일, lib, dll 추가하기
https://skypirateking.blogspot.com/2023/05/visual-studio-visual-studio-2022.html
DB 연결 -> 테이블 생성 -> 데이터 insert를 작성했다.
아래 링크를 참조 했다.
링크에 다른 예제도 많으니 참고하면 좋다.
https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm
전체 소스 다운
https://drive.google.com/file/d/10Fyx65OWsWUofveZFSbSmNsvPC6qFCYh/view?usp=sharing
#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;
}
#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 된 것을 확인 할 수 있다.
댓글
댓글 쓰기