#include "TDatabaseCtrl.h"
//
// sql
//
// ParseUrl 表名
TDatabaseCtrl::TDatabaseCtrl(QObject *parent /*= nullptr*/) :
QObject(parent)
{
loadSQLiteDrvier();
mpSqlDatabase = new QSqlDatabase;
}
TDatabaseCtrl::~TDatabaseCtrl()
{
if (mpSqlDatabase != nullptr)
{
if (mpSqlDatabase->isOpen())
mpSqlDatabase->close();
delete mpSqlDatabase;
mpSqlDatabase = nullptr;
}
}
bool TDatabaseCtrl::createConnection()
{
if (mpSqlDatabase == nullptr)
{
mpSqlDatabase = new QSqlDatabase;
}
if (mpSqlDatabase->isOpen())
{
return true;
}
QSqlError sqlError;
QString errorString = "";
QString strDBPath = TAppComm::Instance().GetAppDataDir();
if (QSqlDatabase::contains(dbConnectionName)) // 如果已经打开
{
*mpSqlDatabase = QSqlDatabase::database(dbConnectionName);
}
else // 如果没有,就添加
{
*mpSqlDatabase = QSqlDatabase::addDatabase(dbDriverName, dbConnectionName);
sqlError = mpSqlDatabase->lastError();
errorString = sqlError.text();
if (!errorString.isEmpty())
{
qWarning() << "QSqlDatabase::addDatabase() failed: " << errorString;
return false;
}
const QString dbPath = TAppComm::Instance().GetAppDataDir(); // 数据库存储路径
mpSqlDatabase->setDatabaseName(dbPath + "/" + dbName); // 指定数据文件路径并创建数据库文件
}
mpSqlDatabase->setUserName(dbUserName);
mpSqlDatabase->setPassword(dbPWD);
mpSqlDatabase->setHostName(QLatin1String("localhost"));
if (!mpSqlDatabase->open())
{
sqlError = mpSqlDatabase->lastError();
errorString = sqlError.text();
qWarning() << "QSqlDatabase::open() failed: " << errorString;
return false;
}
return true;
}
bool TDatabaseCtrl::initDatabase()
{
if (!createConnection())
{
return false;
}
QSqlQuery query(*mpSqlDatabase);
//query.exec(UPDATE_STATUS_IN_USERINFORMATION_SQL); // 查询表“ParseUrl”是否存在
errorSQLOrder(query, "initiDatabase");
if (!query.isActive())
{
mpSqlDatabase->close();
return false;
}
mpSqlDatabase->close();
return true;
}
void TDatabaseCtrl::close()
{
if (mpSqlDatabase != nullptr && mpSqlDatabase->isOpen())
mpSqlDatabase->close();
}
bool TDatabaseCtrl::isOpen()
{
return (mpSqlDatabase->isOpen());
}
void TDatabaseCtrl::loadSQLiteDrvier()
{
QString path = QCoreApplication::applicationDirPath(); //禁止使用 QDir::currentPath() 获取运行路径
QApplication::addLibraryPath(path + QString("/sqldrivers"));
#ifdef _DEBUG
QPluginLoader loader(path + QString("/sqldrivers/qsqlited.dll"));
#else
QPluginLoader loader(path + QString("/sqldrivers/qsqlite.dll"));
#endif
}
void TDatabaseCtrl::errorSQLOrder(QSqlQuery query, QString mark)
{
// 如果SQL语句错误,就弹出警告信息
if (!query.isActive())
{
QString str = query.lastError().text() + "\n" + mark;
qDebug() << "Mysql qurey error: " << str;
qDebug() << "query text:" << query.lastQuery();
}
}
void TDatabaseCtrl::createTable(const QString& strCreatTable)
{
}
Qt使用SQLite数据库
需积分: 11 18 浏览量
2018-06-23
11:11:41
上传
评论 2
收藏 2KB 7Z 举报
shmiloveyou
- 粉丝: 487
- 资源: 83
最新资源
- F103-霸道开发板2.8寸电阻触摸屏例程.rar
- Google(高德)地图瓦片python代码下载
- Python实现输出杨辉三角形
- polsarpro官方教程、操作说明 PolSARpro v5.0 Software Training Course
- STM32 TouchGFX的使用二图片显示
- buildx镜像文件,也可以通过网上其他方式获取
- 【中级软件设计师】上午题12-软件工程(2):单元测试、黑盒测试、白盒测试、软件运行与维护
- 免费计算机毕业设计-医院住院管理系统的设计与实现(包含代码+论文)
- tt100k数据转换yolo格式
- 免费计算机毕业设计-学生在线网络考试系统的设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈