./configure # 查看參數:./configure --help
make
make install
安裝後請確認 include、lib、bin 目錄位置,以便後續編譯連結。
| 函數 | 用途 |
|---|---|
sqlite3_open | 開啟/建立資料庫檔案,回傳 sqlite3* 控制代碼 |
sqlite3_exec | 執行 SQL 陳述式(支援 callback 處理查詢結果) |
sqlite3_close | 關閉資料庫連線 |
typedef int (*sqlite3_callback)(
void*, // 使用者自訂資料(sqlite3_exec 第 4 參數)
int, // 該行欄位數
char**, // 欄位值陣列
char** // 欄位名稱陣列
);
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#define DB_FILENAME "/home/user/sqlite/db/sqlite.db"
static int callback(void *userData, int colNum, char **colVal, char **colName) {
static int headerPrinted = 0;
if (userData && !headerPrinted++) {
printf("---------%s-------\n", (const char*)userData);
for (int i = 0; i < colNum; ++i) printf("%s\t", colName[i]);
printf("\n");
}
for (int i = 0; i < colNum; ++i)
printf("%s\t", colVal[i] ? colVal[i] : "NULL");
printf("\n");
return 0;
}
int main() {
sqlite3 *db;
char *errMsg = 0;
int rc = sqlite3_open(DB_FILENAME, &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return 1;
}
printf("Opened database successfully\n");
const char *sql =
"CREATE TABLE COMPANY("
"ID INT PRIMARY KEY NOT NULL,"
"NAME TEXT, AGE INT, ADDRESS CHAR(50), SALARY REAL);"
"INSERT INTO COMPANY VALUES(1,'Paul',32,'California',20000.00);"
"INSERT INTO COMPANY VALUES(2,'Allen',25,'Texas',15000.00);"
"INSERT INTO COMPANY VALUES(3,'Teddy',23,'Norway',20000.00);"
"INSERT INTO COMPANY VALUES(4,'Mark',25,'Rich-Mond',65000.00);"
"SELECT * FROM COMPANY;";
rc = sqlite3_exec(db, sql, callback, (void*)"SELECT * FROM COMPANY", &errMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
} else {
printf("Operation done successfully\n");
}
sqlite3_close(db);
return 0;
}
CC = gcc
CFLAGS = -g -Wall -O2 -I /home/user/sqlite/include
LDFLAGS = -L /home/user/sqlite/lib -lsqlite3
PROG = testsqlite
SRCS = testsqlite.c
OBJS = $(SRCS:.c=.o)
all: $(PROG)
$(PROG): $(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -c $<
clean:
rm -f $(OBJS) $(PROG) core *~
Opened database successfully
Table created successfully
Records created successfully
---------SELECT * FROM COMPANY;-------
ID NAME AGE ADDRESS SALARY
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
Select records successfully
sqlite3_prepare_v2 + sqlite3_bind)防止注入。SQLITE_THREADSAFE 並妥善管理連線。