sqlite3编程
来源:互联网 发布:淘宝虚拟网店要不要钱 编辑:程序博客网 时间:2024/06/05 16:52
前言
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等。
--------摘自百度百科
本篇文章主要讲述如何在终端和C程序里中使用sqlite3
一:在终端上使用sqlite3
1:首先检测当前环境下有没有安装
在终端上输入 sqlite3
结果:
第一行是你的版本信息;光标在等待你输入命令
终端上的一些基础命令
1: .help 打开帮助菜单 可以查看sqlite3的所有命令和用法
2: .exit 退出sqlite3
3 : .table 显示当前所有表
4: .schema <table_name> 查看表的结构 //不加括号
5: .database 显示当前打开的数据库文件
系统命令一般以点开头;功能命令以分号结尾;
2:建立一张表
create table student( //student为表名
ID INTEGER, //相当与字符型
name TEXT, //整形
sex TEXT,
age INTEGER,
primary key(ID) //ID值不可重复
);
3:给表添加成员
insert into student values(1, 'Zhang', 'M', 18);
第二个语句提示ID为1的重复了;
4:查看成员
select ID, Name from student where NOT(Sex = 'f'); //查看成员中SEX的值不为f的成员ID和名字
当要查看成员所有参数的时候ID,Name可以用*号代替
select * from student where NOT(Sex = 'f');
where是个比较表达式,以下列举一些通用的表达式
NOT是逻辑操作符除了,NOT 以外还可以使用AND 、OR;
5:删除成员
delete from student where ID = 2;
删除student表里id为2的成员
6:删除表
drop tablestudent;
删除名字为student的表
二:在C程序上使用SQLITE3
1:先包含数据库头文件 sqlite3.h
2:定义一个数据库文件指针
sqlite3 *database
2:打开表函数
int sqlite3_open( 文件名,sqlite3 ** );
第一个参数为数据库名称,第二个是文件指针
如果数据库不存在,则新建一个
3:关闭数据库
intsqlite3_close(sqlite3 *);
第一个参数为文件指针
4:使用数据库的函数
int sqlite3_exec(sqlite3*, constchar *sql,sqlite3_callback, void *, char**errmsg );
第一个参数为文件指针;第二个参数为sql语句
第三个参数为回调函数;第四个参数为为回调
第5个参数char** errmsg是错误信息
5:例子
#include <stdio.h>#include <sqlite3.h> // 数据库的头文件// 每查到一条记录,该函数被调用一次int msg(void* v, int num, char** value, char** name){ int i; for (i = 0; i < num; i++) { printf ("%s : %-8s", name[i], value[i]); } printf ("\n"); return 0; // 函数内部一定要返回一个0}int main(){ sqlite3 * database; // 打开数据库 int ret = sqlite3_open("student.db", &database); if (ret != SQLITE_OK) { printf ("打开数据库失败\n"); return -1; } printf ("打开数据库成功\n"); char *errmsg = NULL; char *sql = "create table if not exists student(ID INTEGER,name TEXT,sex TEXT,age INTEGER,primary key(ID))"; ret = sqlite3_exec(database, sql, NULL, NULL, &errmsg); if (ret != SQLITE_OK) { printf ("数据库操作失败:%s\n", errmsg); return -1; } int id; char name[20]; char sex[2]; int age; printf ("请输入ID:\n"); scanf ("%d", &id); printf ("请输入用户名:\n"); scanf ("%s", name); printf ("请输入性别:\n"); scanf ("%s", sex); printf ("请输入年龄:\n"); scanf ("%d", &age); // insert into student values(id, name, sex, age); char buf[100]; sprintf (buf, "insert into student values(%d, '%s', '%s', %d)", id, name, sex, age); ret = sqlite3_exec(database, buf, NULL, NULL, &errmsg); if (ret != SQLITE_OK) { printf ("数据库操作失败:%s\n", errmsg); return -1; } char *sql1 = "select * from student"; ret = sqlite3_exec(database, sql1, msg, NULL, &errmsg); if (ret != SQLITE_OK) { printf ("数据库操作失败:%s\n", errmsg); return -1; } // 关闭数据库 sqlite3_close(database); return 0;}TIP:如果用GCC编译的话,要加-lsqlite3
- sqlite3编程
- sqlite3编程接口
- SQLite3的C编程
- SQLite3基本编程手册
- sqlite3编程 & 示例
- Android Sqlite3 编程详解
- sqlite3编程笔记
- SQLite3基本编程手册
- SQLite3 -- C 编程
- Linux C SQLite3 编程
- Linux C SQLite3 编程
- sqlite3编程笔记
- Sqlite3编程初级入门
- SQLite3 -- C 编程
- Linux C SQLite3 编程
- SQLite3 API编程手册
- SQLite3 API编程手册
- SQLite3 API编程手册
- QT5.8+Opencv3.2+Opencv_contrib-3.2.0环境配置
- JLINK_V8固件烧写教程
- 20、二分查找的实现与应用
- C++继承
- 神经网络
- sqlite3编程
- 设计模式——策略模式及在jdk中的应用
- I
- Android爬坑日记
- javascript中三大弹出框alert(),confirm(), prompt() 的应用和区别
- 网站开发(十五)文章分页技术
- repo/git提交代码
- 【Android开发笔记】仿微信支付密码
- static、final修饰符、内部类和Java内存分配