前言
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎(来源百度百科)。它是一款轻量级数据库,所占资源低,消耗总量小,被用于嵌入式开发。
安装
apt-get install sqlite3 //数据库操作软件
apt-get install libsqlite3-dev //数据库开发库
sql命令
进入数据库
sqlite3
帮助信息
.help
创建数据库
.open student.db
创建表
create table student(id integer,name text,age integer);
查看数据库的位置
.database
输出
seq | name | file |
---|---|---|
0 | main | sqlite3/test.db |
查看数据表的名字
.table
输出:
student
查看数据表创建的信息
.schema
CREATE TABLE student(id integer,name text,age integer);
插入数据
insert into student(id,name,age) values(1,"stu1",21);
insert into student(id,name,age) values(2,"stu2",22);
insert into student(id,name,age) values(3,"stu3",23);
查询数据
select * from student;
设置空白字段显示的字符串
.nullvale "NULL"
显示表头
.header on
查看显示模式
# 如tab list column[推荐] csv table[推荐]
.mode column
修改数据
update student set age = 25 where id = 3;
删除数据
delete from student where id =1;
删除数据表
drop table student;
离开数据库
.exit
sqlite的API
打开数据库
char sql[128]; //保存sql语句的字符串
sqlite3 *ppdb; //数据库指针
int ret = sqlite3_open("student.db", &ppdb);
创建数据库
memset(sql, 0, sizeof(sql)); //清空sql
sprintf(sql, "create table if not exists student(id integer,name text,age integer);");
ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL); //执行sql语句
插入数据
memset(sql, 0, sizeof(sql)); //清空sql
sprintf(sql, "insert into student(id,name,age) values(%d,'%s',%d);", id, name, age);
ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL);//执行sql语句
查询
// 查询方法1
memset(sql, 0, sizeof(sql));//清空sql
sprintf(sql, "select * from student;");
printf("查询方法1结果如下\n");
ret = sqlite3_exec(ppdb, sql, print, NULL, NULL); //执行sql语句 利用回调函数
int print(void *arg, int column, char **value, char **name)// 回调函数
{
for (size_t i = 0; i < column; i++)
{
printf("%s = %s ", name[i], value[i]);
}
printf("\n");
return 0;
}
// 查询方法2
char **result;//字符串数组
int row = 0, column = 0;
memset(sql, 0, sizeof(sql));
sprintf(sql, "select * from student;");
ret = sqlite3_get_table(ppdb, sql, &result, &row, &column, NULL);
if (ret != SQLITE_OK)
{
printf("sqlite3_get_table:%s\n", sqlite3_errmsg(ppdb));
exit(0);
}
int i, j;
int inindex = column;
printf("查询方法2结果如下\n");
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++)
{
printf("%s = %s ", result[j], result[inindex]);
inindex++;
}
printf("\n");
}
标签:linux,name,sql,student,使用,sqlite3,NULL,id
From: https://www.cnblogs.com/dongchao612/p/17212526.html