那上一章节我们已经把最基本的UI框架搭建好了,这一章节我们尝试连接数据库,实现一些最基本的和数据相关的功能,比如注册和登录。
1、连接数据库
Qt中的Qt SQL模块提供了对数据库的支持,在使用Qt SQL模块中的这些类之前,需要在项目文件(.pro文件)中添加QT += sql这一行代码。
Qt支持的数据库类型有很多,我们这里选择了SQLite数据库,这是一个很轻量级的文本型数据库,Qt对它提供了很好的支持,当然也可以选择其他的数据库,比如MYSQL,SQL Server等。
考虑到复杂度,我们暂时将数据库部署到本地,后续可以探索通过网络访问数据库服务器的方式。
我们还是新建一个类,文件->新建文件或项目->文件和类->C++->C++ Class,类名称我这里设置为mySqlite,基本类为自定义。
sql呢最开始肯定得要先被初始化,在头文件mysqlite.h中,我们在mySqlite这个类中添加一个public函数 bool initSql(),用来初始化数据库,记得添加头文件QSqlDatabase,内容如下:
#ifndef MYSQLITE_H
#define MYSQLITE_H
#include <QSqlDatabase>
class mySqlite
{
public:
mySqlite();
bool initSql();
};
#endif // MYSQLITE_H
在mysqlite.cpp中,我们把initSql()函数体的内容补充完整;
bool mySqlite::initSql()
{
QSqlDatabase myDB = QSqlDatabase::addDatabase("QSQLITE");
myDB.setDatabaseName(QApplication::applicationDirPath() + "/Database/"+"myWMS.db");
if(!myDB.open())
{
return false;
}
return true;
}
sql初始化实际上需要干两件事,一是先创建一个SQLite数据库连接,二是需要创建数据表。
我们现在已经创建了一个SQLiteL连接,db文件我们命名为myWMS.db,目录为Database,注意需要提前在可执行程序的目录内建立好Database这个文件夹,不然会连接失败。
接下来,我们在mainwindow中新建一个mySqlite实例,并调用它的initSql函数。
我们在mainwindow.h中增加一个成员mySqlite *mysql,在mainwindow的构造函数中,增加如下内容:
mysql = new mySqlite;
if(mysql->initSql())
qDebug()<<"连接成功";
else
qDebug()<<"连接失败";
这里我们用了qDebug函数来打印输出结果,方便调试,使用之前记得加上头文件#include <QDebug>。
运行之后,我们会在Qt Creator的输出面板中看到,显示连接成功,证明我们的数据库已经连接上了,我们打开项目的debug目录,也可以看到目录中增加了一个数据库文件。
2、建立数据表格
刚才已经说过了,数据库的初始化需要连接数据库,建立表格,数据连上了,接下来就得建立咱们需要的数据表了&