QtDbfHelper.h文件
#pragma once
#include <QObject>
#include <qsql.h>
#include <qsqldatabase.h>
#include <qsqlquerymodel.h>
#include <qsqlrecord.h>
#include <qsqlquery.h>
#include <qsqlfield.h>
class QtDbfHelper : public QObject
{
Q_OBJECT
private:
QSqlDatabase m_dbconn;
public:
QtDbfHelper(QObject *parent = nullptr);
~QtDbfHelper();
public:
bool ConnectDB(const QString& dbFilePath);//dbFilePath指的是dbf所在路径,而不是.dbf文件
QSqlQueryModel* QueryModel(const QString& tabelName);//获取整个table数据模型
QSqlQueryModel* ExecuteScalar(const QString& sql); //sql 查询 数据操作
bool ExecuteNonQuery(const QString& sql); //sql 增,删,改 数据操作
bool ExistsTable(const QString& tableName);
};
QtDbfHelper.cpp文件
#include "QtDbfHelper.h"
QtDbfHelper::QtDbfHelper(QObject *parent): QObject(parent)
{
}
QtDbfHelper::~QtDbfHelper()
{
if (m_dbconn.isValid() && m_dbconn.isOpen())
{
m_dbconn.close();
}
}
bool QtDbfHelper::ConnectDB(const QString& dbFilePath)
{
bool bResult = false;
//获取是否存在有数据库连接
m_dbconn = QSqlDatabase::database(dbFilePath);
if (m_dbconn.isValid())//存在连接直接退出
{
bResult = true;
}
else
{
//创建dbFilePath路径数据库连接
m_dbconn = QSqlDatabase::addDatabase("QODBC", dbFilePath);
QString connStr = QString("Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=%1;Exclusive=No;").arg(dbFilePath);
m_dbconn.setDatabaseName(connStr);
bResult = m_dbconn.open();
}
return bResult;
}
QSqlQueryModel* QtDbfHelper::QueryModel(const QString& tabelName)
{
QSqlQueryModel* pQueryModel = nullptr;
if (m_dbconn.isOpen(