在Qt中支持"QSQLITE", “QMYSQL”, “QMYSQL3”, “QODBC”, “QODBC3”, “QPSQL”, "QPSQL7"这若干种数据库的驱动。而QSQLITE是属于Qt内部已经建立好的数据库,可应用于嵌入式方向的一个较为轻型的文件型数据库。
接下来则使用此数据库大致描述其相关的应用:
首先,想要使用数据库则需要在.pro文件中添加sql即如下所示:
添加完成后便可以加入头文件:
#include <QSqlDatabase>
#include <QSqlQuery>
头文件加入之后便在.c文件中开始相应的操作:
//首先先添加数据库QSQLITE
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库名,添加内存数据库。
db.setDatabaseName(":memory:");
//若未打开数据库则显示错误,
if(!db.open())
{
QMessageBox::warning(0,"error",db.lastError().text());
return;
}
//数据库打开后则可以开始创建数据库内容
QSqlQuery query;
//设置一个学生信息的数据,设置id为主键,并设置学生的姓名
query.exec("create table student (id int primary key, "
"name varchar(20))");
//插入学生的id以及姓名
query.exec("insert into student values(0, 'lilei')");
query.exec("insert into student values(1, 'hanmeimei')");
query.exec("insert into student values(2, 'Mike')");
query.exec("insert into student values(3, 'Jane')");
query.exec("insert into student values(4, 'Leonardo')");
可以检测一下是否插入
QSqlQuery query;
//遍历数据库student的内容
query.exec("select * from student");
//每次都获取student的下一个值,直到将student的值取完。
while(query.next())
{
//value(i)分别是创建数据库中依次的值,0为第一个值,即id,1为第二个,即name
qDebug()<<query.value(0).toInt()<<query.value(1).toString();
}
qDebug可以打印出数据库的值:
而若是想要插入批量的信息则可以使用prepare设置值后利用bindValue来绑定相应的值:
//先将需要的值通过QVariantList容器列表中保存起来
QVariantList id;
id<<0<<1<<2<<3<<4;
QVariantList name;
name<<"lilei"<<"hanmeimei"<<"Mike"<<"Jane"<<"Leonardo";
db.setDatabaseName(":memory:");
if(!db.open())
{
QMessageBox::warning(0,"error",db.lastError().text());
return;
}
QSqlQuery query;
//先创建数据库以及对应的值
query.exec("create table student(id int primary key, name varchar(20))");
//插入值,通过占位符来表示值,values(:自定义名称)
query.prepare("insert into student(id,name) values (:id,:name)");
query.bindValue(":id",id );
query.bindValue(":name", name);
//加入库中
query.execBatch();
加入后便可以显示出值:
其余的query操作如下所示,用法类似:
- seek(int n) :query指向结果集的第n条记录;
- first() :query指向结果集的第一条记录;
- last() :query指向结果集的最后一条记录;
- next() :query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录;
- previous() :query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录;
- record() :获得现在指向的记录;
- value(int n) :获得属性的值。其中n表示你查询的第n个属性,该函数返回QVariant类型的数据.
- at() :获得现在query指向的记录在结果集中的编号。
对于修改数据库的方法可如下:
通过 UPDATE “数据库名” SET “修改的值” = ‘%1’ WHERE “值位于何处” = %2
代码如下:
QString str =QString("UPDATE student SET name = '%1' WHERE id = %2").arg("qwe").arg(2);
query.exec(str);
qDebug()<<" ";
query.exec("select * from student");
while(query.next())
{
qDebug()<<query.value(0).toInt()<<query.value(1).toString();
}
该代码将id为2的name值修改为qwe。
而对于删除操作则可如下:
query.exec(“DELETE FROM student”);
该代码则可将数据库所有的值删除,若想只删除某行则如下:
query.exec(“DELETE FROM student where id = %1”);