官网:https://sqlite.org/download.html
下载代码安装三步走:
./configure // ./configure --help查看安装参数设置,学习configure的配置,明白安装后include、lib、bin等文件的位置
make
make install
学习SQL基本语法,各个数据库基本相同 http://www.w3cschool.cc/sqlite/sqlite-tutorial.html
常用函数:
int sqlite3_open(const char *filename, /* Database filename (UTF-8) */sqlite3 **ppDb /* OUT: SQLite db handle */
);typedef int (*sqlite3_callback)(
void*, /* Data provided in the 4th argument of sqlite3_exec() */
int, /* The number of columns in row */
char**, /* An array of strings representing fields in the row */
char** /* An array of strings representing column names */
); int sqlite3_exec(sqlite3*, /* An open database */const char *sql, /* SQL to be evaluated */int (*callback)(void*,int,char**,char**), /* Callback function */void *, /* 1st argument to callback */char **errmsg /* Error msg written here */
);int sqlite3_close(sqlite3*);
例子:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>#define DB_FILENAME "/home/suo/Desktop/sqlite/datadir/sqlite.db"
static int flag = 0;static int callback(void *userData, int columnNum, char **columnText, char **columnName)
{int index;if (userData && !flag++) {fprintf(stdout, "---------%s------\n", (const char*)userData);for (index=0; index<columnNum; index++) {printf("%s\t", columnName[index]);}printf("\n");}for(index=0; index<columnNum; index++){printf("%s\t", columnText[index] ? columnText[index] : "NULL");}printf("\n");return 0;
}int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg = 0;int rc;char *sql;rc = sqlite3_open(DB_FILENAME, &db);if( rc != SQLITE_OK){fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));exit(0);}else{fprintf(stderr, "Opened database successfully\n");}sql = "CREATE TABLE COMPANY("\"ID INT PRIMARY KEY NOT NULL,"\"NAME TEXT NOT NULL,"\"AGE INT NOT NULL,"\"ADDRESS CHAR(50),"\"SALARY REAL);";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error :%s\n", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Table created successfully\n");}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, 'Rick-Mond', 65000.00);";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error: %s", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Records created successfully\n");}sql = "SELECT * FROM COMPANY;";rc = sqlite3_exec(db, sql, callback, (void *)sql, &zErrMsg);if(rc != SQLITE_OK){fprintf(stderr, "SQL error: %s", zErrMsg);sqlite3_free(zErrMsg);} else {fprintf(stdout, "Select records successfully\n");}sqlite3_close(db);return 0;
}
对应Makefile:
#! /usr/makerm=/bin/rm -f
CC = gcc
DEFS =
PROGNAME = testsqlite
INCLUDES = -I /home/suo/Desktop/sqlite/include
DEFINES += $(INCLUDES) $(DEFS)
CFLAGS = $(DEFINES) -g -Wall -O2
LDFLAGS = SRCS = testsqlite.c
OBJS = testsqlite.o
LIBS = -L./lib -lsqlite3.cpp.o:$(rm) $@$(CC) $(CFLAGS) -c $*.cppall: $(PROGNAME)
$(PROGNAME) : $(OBJS) $(CC) $(CFLAGS) -o $(PROGNAME) $(OBJS) $(LDFLAGS) $(LIBS)clean:$(rm) $(OBJS) $(PROGNAME) 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 Rick-Mond 65000.0
Select records successfully