使用sqlite存储信息

September 29th, 2013 by JasonLe's Tech Leave a reply »

最近要使用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表 进行操作,联合查询和子查询都会用到。
Unnamed QQ Screenshot20130929221959

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我们要了解业务逻辑,所以我将friend的id设为外键而不是主键。因为friend与user是1:N的关系。

tmp因为我们有fromfriendid所以我们不需要id的参与。