目录
一. SQLite数据库安装
a. https://www.sqlite.org/download.html 进入官网下载
b. 把下载的文件 sqlite-autoconf-3450300.tar.gz 上传到开发板中
c. tar xvf sqlite-autoconf-3450300.tar.gz 解压
d. cd sqlite-autoconf-3450300 进入文件夹中
e. ./configure --prefix=/usr/local 配置安装路径在 /usr/local
f. make 进行编译(时间比较久)
g. sudo make install 进行安装
二. SQLite命令用法
a. mkdir sqlite 先创建一个文件夹用于存放建立的数据库
b. cd sqlite 进入文件夹中
c. sqlite3 进入数据库交互页面
d. .open test.db 或 sqlite3 test.db 创建数据库或打开已有的数据库
f. .database 可以查看已有的数据库或者是已经打开的数据库
g. create table stu(id Integer,name char,score Integer); 创建表
h. .tables 可以查看已有的表
i. insert into stu values(001,'miwei',100);
insert into stu(name,score) values('miwei',100); 向表中插入数据
j. .quit 可退出数据库
j. Ctrl+Z 当我们敲错命令后,可通过此命令退出数据库
三. SQLite的编程操作
sqlite3_open(const char *filename,sqlite3 **ppDb); //打开数据库
//返回值为SQLITE_OK:表示打开成功
//打开失败时,返回宏,如返回值为14时代表权限不足
sudo chmod -r test.db 使该数据库没有读的权限
const char *sqlite3_errmsg(sqlite3*); //用于获取最近调用的API接口返回的错误代码
sqlite3_close(sqlite3*); //关闭数据库,如果还有查询没有完成,则会返回
SQLITE_BUSY禁止关闭的错误消息。
以下程序将用sqlite3_open函数打开数据库,sqlite3_errmsg函数打印数据库打开失败原因,
sqlite3_close函数关闭数据库。
#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
int main(int argc, char **argv) {
sqlite3 *db;
int ret;
if(argc < 2){
printf("Usage: %s xxx.db\n",argv[0]);
}
//打开数据库,argv[1]是数据库的名称
if(ret = sqlite3_open(argv[1],&db) == SQLITE_OK){
printf("open %s success\n",argv[1]);
}else{
printf("error:%s,%d\n",sqlite3_errmsg(db),ret);
//权限问题导致无法打开该数据库
if(ret == 14){
printf("permission den\n");}
return -1;
}
//关闭数据库
sqlite3_close(db);
printf("done\n");
return 0;
}
———————————————————————————————————————————
以下程序将用sqlite3_exec函数实现与数据库的操作
sqlite3_exec函数将用于执行SQL语句并将执行结果传递给回调函数。
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *arg, int column_size, char *column_value[], char *column_name[]) {
int i;
printf("arg=%s\n", (char *)arg);
for (i = 0; i < column_size; i++) {
printf("%s = %s\n", column_name[i], column_value[i] ? column_value[i] : "NULL");
}
printf("\n");
return 0;
}
int main() {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char *sql;
/*Open database*/
rc = sqlite3_open("test.db",&db);
if(rc){
fprintf(stderr,"Can't open database:%s\n",sqlite3_errmsg(db));
}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);";
/*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");
}
sqlite3_close(db);
return 0;
}