在 QT5 中使用 SQLITE
SQLITE 简介WHAT IS SQLITE?SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。 不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。 (来自百度百科) WHY SQLITE?从 SQLITE 的用途来看,它是一款轻量级的数据库,并且一开始是设计给嵌入式设备的,我们知道 QT 其实现在也是在嵌入式方向应用的比较广泛,因此 QT 内置有 SQLITE 数据库的模块,因此我们能够比较容易上手。并且对于该项目使用文件形式的数据库更加灵活和轻便,更加符合这个项目的需求。 在 QT 中使用 SQLITE0x00 修改 .pro 文件为了能使用 SQLITE 我们必须在 QT 工程中的 QT += core gui sql
0x01 查看 QT 支持哪些数据库我们可以通过 qDebug() << QSqlDatabase::drivers(); 执行结果为: ("QSQLITE","QMYSQL","QMYSQL3","QODBC","QODBC3","QPSQL","QPSQL7")
我们可以看到当前的 QT 是包含有 SQLITE 驱动的。 0x02 创建一个数据库连接我们来编写一个 bool connect(const QString &dbName)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(dbName);
if (!db.open()) {
qDebug() << "Database Error!";
return false;
}
return true;
}
使用这个函数我们可以创建一个名称为 if(connect("test.db")){
qDebug() << "Database Create Sucessfully!";
}
else{
qDebug() << "Database Create Failed!";
}
我们会看到在工程编译后的目录中生成了一个 Database Create Sucessfully! 0x03 使用 SQL 语句在 QT 中我们通过一个QSqlQuery实例执行 SQL 语句: QSqlQuery query; 创建表我们创建一个名叫 if (!query.exec("CREATE TABLE student ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name VARCHAR,"
"age INT)")) {
qDebug() << "Create Table Failed!";
}
插入条目我们可以直接使用 if(!query.exec("INSERT INTO student (name,age) VALUES ("TOM",10)")){
qDebug() << "INSERT Failed!";
}
也可以使用下面的形式来一次添加多个条目: query.prepare("INSERT INTO student (name,age) VALUES (?,?)");
QVariantList names;
names << "Tom" << "Jack" << "Jane" << "Jerry";
query.addBindValue(names);
QVariantList ages;
ages << 20 << 23 << 22 << 25;
query.addBindValue(ages);
if (!query.execBatch()) {
qDebug() << "INSERT Failed!";
}
query.finish();
其它的语句都可以采用上面类似的方法进行实现,这里不再赘述。 这次我们使用 SQL 语句完成了对数据库的常规操作,包括简单的 CREATE、INSERT 等语句的使用。其实,Qt 不仅提供了这种使用 SQL 语句的方式,还提供了一种基于模型的更高级的处理方式。这种基于QSqlTableModel 的模型处理更为高级,如果对 SQL 语句不熟悉,并且不需要很多复杂的查询,这种QSqlTableModel模型基本可以满足一般的需求,以后我会介绍QSqlTableModel的一般使用。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |