.bindValue(":score", (qrand() % 101)); //成绩
query.bindValue(":class", clases[qrand()%clases.length()] ); //班级
query.exec(); //加入库中
}
运行后,通过SQLite工具打开students.dat,如下图所示:
6.查询表内容
我们对上图生成的students.dat文件进行查询内容时,则需要使用WHERE 关键字实现.
示例-查询成绩值为60~80之间的学生:
query.exec("SELECT * FROM students WHERE score >= 60 AND score <= 80;");
while(query.next())
{
QString id = query.value(0).toString();
QString name = query.value(1).toString();
QString score = query.value(2).toString();
QString classs = query.value(3).toString();
qDebug()<<id<<name<<score<<classs;
}
运行打印:
当然还有其它语句,比如:
"SELECT * FROM students WHERE score >= 80 OR class == '初3-3班';"
//判断成绩大于等于80,或者班级为初3-3班的
打印如下图所示:
"SELECT * FROM students WHERE class GLOB '*3-3*';"
// GLOB表示通配符,匹配班级带有"3-3"的名字
打印如下图所示:
7.删表内容
删表内容有3个语句:
- DROP: 用来删除整表,并且连表结构也会删除,删除后则只能使用CREATE TABLE来重新创建表
- TRUNCATE: 在SQLite中没有该语句,在MySQL中有该语句,用来清楚表内数据,但是表结构不会删除.
- DELETE: 删除部分记录,并且表结构不会删除,删除的速度比上面两个语句慢,可以配合WHERE来删除指定的某行
示例1
query.exec("DELETE FROM students"); //删除students表里所有内容
删除后如下图所示:
示例2-删除id=3的一行
query.exec("DELETE FROM students WHERE id = 3");
删除前:
删除后:
8.改表内容
改表内容一般用下面两个语句:
- UPDATE : 用来修改表中内容,可以通过WHERE语句来指定修改
- ALTER TABLE: 用来重命名表,或者在已有的表中添加新的一列
8.1 ALTER 示例
示例1
query.exec("ALTER TABLE students RENAME TO new_students"); //将students重命名为new_students
运行后如下图所示:
示例2
query.exec("ALTER TABLE new_students ADD COLUMN 结果 VARCHAR(10)");
//向 new_students表里添加新的一列,标题为结果,内容格式为VARCHAR
运行后如下图所示:
8.2 UPDATE 示例
示例1-不使用WHERE,直接修改某列
query.exec("UPDATE new_students SET score = 100 , name = '小A'");
//修改score和name所在的列内容
修改后如下图所示:
示例2-使用WHERE,判断小于60的设为不合格,否则设为合格
query.exec("UPDATE new_students SET 结果='不合格' WHERE score<60 ");
query.exec("UPDATE new_students SET 结果='合格' WHERE score>=60 ");
修改前如下图所示:
修改后:
|