반응형
SQLite를 C++ 에서 사용하려면 당연히 sqlite3.lib와 sqlite3.h을 추가해 줘야한다.
아래 링크에 순서대로 설명 되어있다.
- sqlite3 사용하기 전 준비 작업
1. Sqlite 설치하기
https://goodprogramer.tistory.com/14
2. sqlite3.h 파일 다운받기 and 다운받은 sqlite3.dll, sqlite3.def 파일로 sqlite3.lib 를 만들기
https://goodprogramer.tistory.com/35
3. 헤더 파일, lib 프로젝트에 추가하기
https://goodprogramer.tistory.com/37
- 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
- 전체 소스 다운
https://drive.google.com/file/d/10Fyx65OWsWUofveZFSbSmNsvPC6qFCYh/view?usp=sharing
반응형
'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 |