安阳企业网站建设,wordpress主题样式乱,定制网站建设宝安西乡,徐州网站排名公司下载
1、更新软件源#xff1a;
sudo apt-get update
2、下载SQLite3#xff1a;
sudo apt-get install sqlite3
3、验证#xff1a;
sqlite3启动数据库#xff0c;出现以下界面代表运行正常。输入 .exit 可以退出数据库 4、安装sqlite3的库
sudo apt-get install l…下载
1、更新软件源
sudo apt-get update
2、下载SQLite3
sudo apt-get install sqlite3
3、验证
sqlite3启动数据库出现以下界面代表运行正常。输入 .exit 可以退出数据库 4、安装sqlite3的库
sudo apt-get install libsqlite3-dev之后编译c代码时需要加上 -l sqlite3
5、打开数据库
sqlite3 数据库文件名 命令
回车可以换行输入但本命令并不结束。输入 ; 后本命令结束
1、以.开头的命令
.help显示所有以.开头的命令
.exit退出sqlite3
.table显示当前已存在的表格
.headers on开启显示表头
.mode column查询时以列的形式显示结果
2、SQL语句
2.1 创建表格
语法
CREATE TABLE table_name (column_1 data_type constraints,column_2 data_type constraints,...,column_n data_type constraints
);
CREATE TABLE创建表格的语句
table_name表格的名字
column_1表格的第一个参数
data_type参数类型
data_type值含义INTEGER整型 intTEXT存储大量文本REAL双精度浮点数
constraints参数约束
constraints值含义PRIMARY KEY主键这具有唯一性的特点NOT NULL非空这代表该参数必须填写AUTOINCREMENT自动增加
示例
创建一个名为“students”的学生信息表。该表将包含以下列ID姓名年龄性别和成绩。
CREATE TABLE students (ID INTERGER PRIMARY KEY NOT NULL,name TEXT NOT NULL,age INTEGER NOT NULL,gender TEXT NOT NULL,score REAL NOT NULL
);
students表格名为students
ID第一个参数是ID
INTERGER参数类型是int型
PRIMARY KEY主键这具有唯一性的特点
NOT NULL非空这代表该参数必须填写 2.2 删除表
语法
DROP TABLE table_name
table_name要删除的表的名字
示例
DROP TABLE students; 2.3 插入数据
语法
INSERT INTO table_name (column_1, column_2, ..., column_n)
VALUES (value_1, value_2, ..., value_n);
table_name表名
column_1第一个参数的名字与创建表时的名字一致
value_1第一个参数的值
示例
向students表中插入一条数据ID1name张三age18gender男score90.0
INSERT INTO students (ID, name, age, gender, score)values(1,张三, 18, 男, 90.0); 2.4 查询数据
语法
SELECT column_1, column_2, ..., column_n
FROM table_name;
column_1参数名写*代表全部参数
table_name表名
示例
查询 students表中的全部参数
SELECT * FROM students; 2.5 更新表格
语法
UPDATE table_name
SET column_1 value_1, column_2 value_2, ..., column_n value_n
WHERE condition;
table_name表名
column_1 value_1将参数column_1的值更新为value_1
condition条件只有满足条件时更新这个内容
示例
将表students中id1的内容更新为名字no哈哈分数50
UPDATE students
SET name no哈哈,score 50
WHERE id 1;2.6 删除数据 语法
DELETE FROM table_name WHERE condition;
table_name 表名
condition条件只有满足条件时删除这个内容
示例
删除表students中id 1的数据
DELETE FROM students WHERE id 1; 3、常用API
3.1 打开数据库
int sqlite3_open(const char *filename, /* 数据库文件的路径 */sqlite3 **ppDb /* 用于存储数据库连接的指针 */
);
返回值成功返回SQLITE_OK
filename数据库文件的路径当filename不存在时会自动创建一个数据库文件。
ppDb用于存储数据库连接的指针
3.2 关闭数据库
int sqlite3_close(sqlite3 *db);
返回值成功返回SQLITE_OK
dbsqlite3_open传入的参数ppDb
3.3 打印错误
const char *sqlite3_errmsg(sqlite3 *db);
返回值错误信息没有错误时不打印信息。
dbsqlite3_open传入的参数ppDb
3.4 执行SQL语句
int sqlite3_exec(sqlite3 *db, /* 数据库连接 */const char *sql, /* 要执行的 SQL 语句 */int (*callback)(void*,int,char**,char**), /* 回调函数 */void *arg, /* 传递给回调函数的参数 */char **errmsg /* 用于存储错误消息的指针 */
);
返回值成功返回SQLITE_OK
dbsqlite3_open传入的参数ppDb
sqlsql语句
callback执行查询语句时会用到该函数其余时候写NULL即可。参数含义如下
参数含义void*sqlite3_exec中的arg参数值int查询结果所返回的列数有多少个字段就有多少列char**第一个每个字段的值char**第二个每个字段的名称
注意callback函数必须return 0否则会报错query aborted 3.5 释放空间
void sqlite3_free(void *p);
功能与free一样释放malloc申请的空间。
sqlite3_exec的参数errmsg实际上申请了一个空间使用之后应该调用sqlite3_free释放空间。
实验代码
使用c语言编程实现SQL语句章节的相关功能。
具体代码实现如下
#include stdio.h
#include sqlite3.h/** callback:sqlite3_exec的回调函数* param arg:sqlite3_exec函数中传入的arg参数的值* param argc:有多少个字段 (比如该代码中argc就是5) * param argv:字段的值 (比如第一个ID的值就是1,2,3.....)* param azColName:字段的名字 (比如该代码中就是ID, name, age, gender,score这几个字段) * */
int callback(void* arg,int argc,char** argv,char** azColName){int i;//printf(get callback,arg %d,argc %d\n,(int)arg,argc);for(i0;iargc-1;i){printf(%s %s\n,azColName[i], argv[i] ? argv[i] : NULL );}return 0; //这里必须返回0
}int main(){sqlite3 *db;char* errmsg NULL;char* sql_create CREATE TABLE students ( \ID INTERGER PRIMARY KEY NOT NULL, \name TEXT NOT NULL, \age INTEGER NOT NULL, \gender TEXT NOT NULL, \score REAL NOT NULL \);;char* sql_insert INSERT INTO students (ID, name, age, gender, score) values(1,张三, 18, 男, 90.0);\INSERT INTO students (ID, name, age, gender, score) values(2,李四, 19, 女, 91.0);\INSERT INTO students (ID, name, age, gender, score) values(3,王五, 20, 男, 92.0);\;char* sql_select SELECT * FROM students;;//1.打开数据库if(sqlite3_open(./mydatabase.db,db) ! SQLITE_OK){sqlite3_errmsg(db);return -1;}//2.执行sql语句if(sqlite3_exec(db,sql_create,NULL,NULL,errmsg) ! SQLITE_OK){printf(sqlite3_exec err:%s\n,errmsg);sqlite3_free(errmsg);return -1;}if(sqlite3_exec(db,sql_insert,NULL,NULL,errmsg) ! SQLITE_OK){printf(sqlite3_exec err:%s\n,errmsg);sqlite3_free(errmsg);return -1;}if(sqlite3_exec(db,sql_select,callback,NULL,errmsg) ! SQLITE_OK){printf(sqlite3_exec err:%s\n,errmsg);sqlite3_free(errmsg);return -1;}//3.关闭数据库sqlite3_close(db);return 0;
}
代码运行结果如下 练习联系人管理系统
实现功能
数据库名为test.db能够向数据库中增删改查联系人数据。
实现代码
见绑定资源包