Qt连接本地Access数据库
最近做项目需要使用Qt做一个表格,想法是直接绑定本地数据库字段然后显示就行了,由于刚学习Qt不久,过程十分曲折,先博客一篇仅作记录,新手上路,欢迎批评指正。
在Qt中有自带的QSql类是用来操作数据库的,本着面向对象的原则,我决定将数据库连接封装成一个类。先引入头文件
#include //线程保护序列化
#include
#include
#include
三个类可以通过查Qt的帮助文档搞清楚含义,通俗来讲QSqlDatabase就是连接数据库,QSqlQuery就是查询语句,废话不多说,直接上代码。
class MyDataBase
{
public:MyDataBase();~MyDataBase();
private:MyDataBase(const MyDataBase &);MyDataBase operator =(const MyDataBase &);
public:static MyDataBase * GetInstance();bool ConnectAccessDB(const QString &strDBName,const QString &strUser,const QString &strPwd) const;QSqlDatabase GetDatabase() const{return QSqlDatabase::database("MyAccessDB");}QSqlQuery GetSqlQuery() const{static QSqlQuery query(m_pInstance->GetDatabase());return query;}bool IsValid() const{return this->GetDatabase().isValid();}bool IsConnected() const{return this->GetDatabase().isOpen();}private:static MyDataBase *m_pInstance;};
.cpp文件是这样的
#include "mydatabase.h"
#include
MyDataBase * MyDataBase::m_pInstance(NULL);MyDataBase::MyDataBase()
{}
MyDataBase::~MyDataBase()
{}MyDataBase * MyDataBase::GetInstance()
{if(NULL == m_pInstance){static QMutex mutex;mutex.lock();if( NULL == m_pInstance){static MyDataBase myDB;m_pInstance = &myDB;}mutex.unlock();}return m_pInstance;
}bool MyDataBase::ConnectAccessDB(const QString &strDBName, const QString &strUser, const QString &strPwd) const
{QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "MyAccessDB");const QString strName(QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=%1;Uid=%2;Pwd=%3").arg(strDBName).arg(strUser).arg(strPwd));db.setDatabaseName(strName);qDebug()<
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
