最近要使用sqlite存储信息,因为sqlite比较轻量级。性能也比较好。
我们要先在linux上使用sqlite。每输入完一条语句结尾要输入;下面先介绍一些命令:
当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识: #sqlite3 test.db 查看所有表的创建语句: sqlite>.schema 查看指定表的创建语句: sqlite>.schema table_name 以sql语句的形式列出表内容: sqlite>.dump table_name 显示sql表 sqlite> .table friend tmp user sqlite> .database seq name file --- --------------- ------------------------------------------ 0 main /home/lzz/nofication.db
在创建表的时候,我们有时候需要创建自增的主键。所以我们可以将id属性设置为 INTEGER PRIMARY KEY这样就可以实现自增。
现在程序中普遍有sql注入的风险,so 我们要使用拼接字符串的写法
query.prepare("insert into user values(:name,:acc,:pwd," ":description, :status,:mobilephone," ":officephone,:dormitory,:mail,:location,:lastlogintime," ":registertime, :birthday)"); query.bindValue(":name", userInf.nickName); query.bindValue(":acc", userInf.account); query.bindValue(":pwd", userInf.password); query.bindValue(":description", userInf.description); query.bindValue(":mobilephone", userInf.mobileNumber); query.bindValue(":officephone", userInf.officephone); query.bindValue(":dormitory", userInf.dormitory); query.bindValue(":mail", userInf.mail); query.bindValue(":location", userInf.location); query.bindValue(":lastlogintime", userInf.lastlogintime); query.bindValue(":registertime", userInf.registertime); query.bindValue(":birthday", userInf.birthday);
因为我最近在写chatserver,所以要对sqlite表 进行操作,联合查询和子查询都会用到。
我们要了解业务逻辑,所以我将friend的id设为外键而不是主键。因为friend与user是1:N的关系。
tmp因为我们有fromfriendid所以我们不需要id的参与。