joncpp基本应用认识:
Json::Value类 : json与外界进行数据中转的一个对象类
重载了大量的操作符 : 赋值运算符
包含了大量的类型转换函数 :
Json::Reader类 : 实现反序列化,
将json格式字符串转换为多个数据对象, 存储在Json::Value对象中
Json::Writer类 : 实现序列化,
基类 -- 子类 : Json::FastWriter / Json::StyledWriter
将Json::Value对象中的数据序列化成为ison格式的字符串
mysql数据库的基本操作 : SQL
客户端操作 : mysql -uroot -p
sql语句注意事项 :
1. sql语句中, 每条语句都应该以 ; 结束
2. sql语句中不区分大小写
3. sql语句中, 数据库名称, 表名称, 字段名称不能直接使用sql关键字
库的操作 :
1. 创建数据库 : create database dbname(数据库名称);
create database if not exists dbname;(如果没有重复的数据库就创建)
2. 查看所有数据库 : show databases;
3. 选择所使用的数据库 : use dbname;
4. 查看所使用的数据库 : select database();
5. 删除数据库 drop database dbname;
表的操作 :
常用数据类型 : int--整形, decimal(m,d)--浮点型--m表示总位数,d表示小数点后位数,
varchar(255)--字符,限制最多255个字符,可改变, datetime--日期类型
创建表:
create table if not exists tbname( id int, name varchar(1024), sex bit, socre decimal(4,2), birth datetime);
查看所有表:show tables;
查看指定表结构:desc tbname;
删除表:drop table tbname;
表中的约束字段
主键约束:primary key 约束指定字段的值 -- 非空且唯一
唯一约束:unique key 约束指定字段必须唯一
非空约束:not null 约束指定字段的值不能为NULL
自增属性:auto increment (只能用于整形的主键字段)
create table if not exists tbname(id int primary key auto_increment, name varchar(32) not null unique,
sex bit, score decimal(4,2), birth datetime );
表中数据的操作 : 增删查改
查看表中信息 : select * from tbname;
新增 :
insert tbname(id,name,sex) values(null,"张三",0);
insert tbname values(null,"李四",1,88.88,"2020-10-8 12:00");
删除 :
delete from tbname where id=2; (不加where id=2, 将全部删除)
修改:f
update tbname set score=66.78,birth="2021-8-6 21:00" where id=1;
查询:
查询表中所有数据--select * from tbname;
指定列查询--select id, name, score from tbname;
按升序排序--select id, name, score from tbname order by id;
按降序排序--select id, name, score from tbname order by id desc;
分页查询--select * from tbname order by id desc limit 3 offset 3;
条件查询-select * from tbname where score<70;
select * from tbname where score<90 and score>70;
select * from tbname where id between 2 and 5;
select * from tbname where id in(1,3);
select * from tbname where sex is null;
select * from tbname where sex is not null;
select * from tbname where name like "张%";
select * from tbname where name like "%四%";
数据库的导入:mysql -uroot -p <db.sql
mysql 代码操作:
初始化操作:
1.初始化操作句柄
2.通过句柄连接mysql数据库
3.设置客服端字符集(utf8)
4.选择使用的数据库
数据操作:
5.执行语句:
增删改: 执行语句 -- 执行语句成功即可
查询: 执行语句 --
将查询结果获取到本地
获取结果中数据的条数和列数
遍历结果集获取每条数据的每一列
释放本地结果集
6.关闭句柄释放资源
7.获取接口执行失败原因
接口介绍
1.初始化操作句柄
MYSQL *mysql_init(MYSQL *mysql);
2.通过句柄连接mysql数据库
MYSQL *mysql_real_connect(MYSQL *mysql, char *host, char *username,
char *passwd, char *dbname, int port, char *sock, int flag)
mysql: 初始化完成的句柄; host: mysql服务器ip地址
username: 用户名; passwd: 密码
dbname: 默认所选择的数据库名称
port: mysql服务端口 - 0 - 默认3306
sock: socket文件, 通常置NULL
flag: 客户端标志 -- 通常置0
返回值: 成功返回句柄, 失败返回NULL
3.设置客服端字符集(utf8)
int mysql_set_character_setr(MYSQL *mysql, char *name);
mysql: 句柄 name: 字符集名称 -- utf8
返回值: 成功返回0, 失败返回非0
4.选择使用的数据库
int mysql_select_db(MYSQL *mysql,char *dbname)
mysql: 句柄 dbname: 要切换的数据库名称
返回值: 成功返回0 失败返回非0
5.执行语句
(增删改)
int mysql_query(MYSQL *mysql,char *sql)
mysql: 句柄 sql: 要执行的sql语句
返回值: 成功返回0, 失败返回非0
(将查询结果获取到本地)
MYSQL_RES *mysql_store_result(MYSQL *mysql)
mysql: 句柄
特殊说明: mysql_query与mysql_store_result存在线程安全问题
返回值: 成功返回结果集的地址; 失败返回NULL
(获取结果中数据的条数和列数)
int mysql_num_rows(MYSQL_RES *res) -- 获取行数
int mysql_num_fields(MYSQL_RES *res) -- 获取列数
(遍历结果集获取每条数据的每一列)
MYSQL_ROW mysql_fetch_row(MYSQL_RES *res);
MYSQL_RES res中会记录当前获取的位置, 逐条取出
MYSQL_ROW: 就是一个char**
(释放本地结果集)
int mysql_free_result(MYSQL_RES *res);
6.关闭句柄释放资源
int mysql_close(MYSQL *mysql);
7.获取最近一次操作失败原因
char *mysql_error(MYSQL *mysql);