【域套接字】
AF_UNIX / AF_LOCAL
用于本地进程之间的通信
通信基于套接字文件
编程流程
server:
**1.**socket(AF_UNIX,SOCK_STREAM,0);<br /> unlink(); //删除目标最后一个链接文件,若链接文件不存在,则删除文件<br /> **2.**bind() //绑定协议族和本地通信的套接字文件<br /> struct sockaddr_un<br /> {<br /> sun_family; //AF_UNIX<br /> sun_path[108]; //套接字路径名<br /> };<br />注意:套接字一定要保证不存在<br /> **3.**listen()<br /> **4.**accept()<br /> **5.**recv/send()<br /> **6.**close()
client:
**1.**socket();<br /> **2.**指定套接字文件路径和协议族<br /> **3.**connect()<br /> **4.**recv/send;<br /> **5.**close()
【数据库】
定义:
数据库管理系统:
sqlite3数据库:
1.零配置,无需配置和安装管理
2.存储在单一磁盘上的完整数据库
3.数据库把文件可以在不同字节顺序的机器上实现共享
4.支持数据库大小可以到2TB
5.足够小,250kb
6.比市面上大多数数据库对数据的操作都快
sqlite是轻量级数据库
打开一个数据库文件:
sqlite3 名字.db
【sqlite3操作命令】
系统命令
系统命令以.为前缀
.help:查询帮助文档
.quit:退出数据库进程
.open 数据库名:打开数据,没有就不打开
.table:查看当前数据库中有哪些表
.schema:查看表格结构
数据库操作命令
数据库操作命令以’;’结尾
1.创建表:
create table 表名 (成员 成员类型,成员 成员类型,...);<br />注意:数据库不支持严格类型检查<br />**补充:**创建表格时,当表格存在,我们可以在语句里+if not exists判断<br />“create table if not exists 表名() ;”
2.插入一条数据:
insert into 表名 values(成员,...);
3.查询:
select * from 表名; 查询表中所有数据
按照指定条件查询:
select * from 表明 where 成员=具体数据; <br /> select * from 表明 where 成员=具体数据 and 成员=具体数据;<br /> select * from 表明 where 成员=具体数据 or 成员=具体数据;
查询指定几项数据:
select 成员,成员 from 表名 条件;
查询前n条数据:
select * from 表名 limit n;
3.删除表中数据:
删除表中所有数据
delete from 表名;
按照条件删除数据
delete from 表名 where 条件;
4.删除表
drop table 表名;
5.增加一列
alter table 表名 add column 成员 成员类型;
6.修改表名
alter table 原表名 rename to 目标表名;
7.删除一列
没有直接删除一列的命令<br /> **步骤:**<br /> **a. **复制原来表中信息到一张新表<br /> create table stu2 as select id,name,age,score form stu1;<br /> **b.**删除stu1<br /> **c.**给stu2改名为stu1
8.更新表中数据
update 表名 set 成员=具体数据;<br /> **按照条件更新**<br /> update 表名 set 成员=具体数据 where 条件;
【sqlite3编程接口】
1.sqlite3_open()
int sqlite3_open(const char path, sqlite3 *db);
功能:
参数:
**path:**要打开的文件路径<br /> **db:**句柄
返回值:
2.sqlite3_close()
int sqlite3_close(sqlite3 *db);
功能:
参数:
返回值:
3.sqlite3_errmsg()
char sqlite3_errmsg(sqlite3 db)
功能:
参数:
返回值:
3.sqlite3_exec()
int sqlite3_exec(sqlite3 db, const char sql,int (callback)(void,int,char,char), void arg,char *errmsg);
功能:
参数:
**db:**句柄<br /> **sql:**数据库语句<br /> **callback:**回调函数<br /> **arg:**传给回调函数的参数<br /> **errmsg:**错误信息
返回值:
注意:
sqlite3_exec的第3,4个参数只有使用select数据库语句时
才被使用,正常情况下填NULL
回调函数:
int callback (void para,int f_num,char*f_value,char f_name){}
功能:
参数:
**para:**是sqlite3_exec的第4个参数传递过来的<br /> **f_num:**每一行的数据项个数<br /> **f_value:**每一个数据项具体的数据<br /> **f_name:**每一个数据项的名字
4.sqlite3_get_table()
int sqlite3_get_table(sqlite3 db,char sql,char resultp,int nrow,int *ncolumn,char errmsg)
功能:
参数:
db:句柄
sql:数据库语句
resultp:指向字符指针数组的指针
nrow:指向存放行数的指针
ncolumn:指向存放列数的指针
errmsg:错误信息指针
返回值:
成功:返回0
失败:返回错误码
