在qt中创建一个数据库连接类

Create a class for database connection in qt

本文关键字:一个 数据库连接 qt 创建      更新时间:2023-10-16

嗨,我是一个初学者在Gui开发使用qt。我有一个项目,我必须使用mysql数据库。我想知道如何创建一个类为我的连接到数据库和查询,所以这将是很容易的,我调用这个类在不同的窗口和执行sql查询

我可以给你我的类的源代码连接到我的数据库。我将特定的数据库数据保存在一个txt文件中,所以如果我将它安装在另一台计算机上,我就可以使这个txt文件适合。这里是header:

#ifndef DATENBANK_H
#define DATENBANK_H
#include <QtSql>
#include <QDebug>
#include <fstream>
#include <string>

using namespace std;
class Datenbank
{
public:
    QSqlDatabase db;
    bool connData();
    void discData();
    Datenbank();
};
#endif // DATENBANK_H

这里是cpp文件。应该正是你要找的

#include "datenbank.h"

Datenbank::Datenbank()
{

}
bool Datenbank::connData()
{
    //txt file um Datenbankdaten auszulesen
   fstream data;
   string Databasename,Hostname,Username,Password,Driver,Crapreader;
    //txt oeffnen
    data.open("Datenbank.txt",ios::in);
    if (!data.is_open())
    {
        qDebug()<<("Failed to open 'Datenbank.txt'");
    }
    //get data from text file, crapreader gets stuff which is irrelevant
    data>>Crapreader>>Driver;
    data>>Crapreader>>Databasename;
    data>>Crapreader>>Hostname;
    data>>Crapreader>>Username;
    data>>Crapreader>>Password;
    data.close();
    QString qDriver = QString::fromStdString(Driver);
    QString qDatabasename = QString::fromStdString(Databasename);
    QString qHostname = QString::fromStdString(Hostname);
    QString qUsername = QString::fromStdString(Username);
    QString qPassword = QString::fromStdString(Password);

    db = QSqlDatabase::addDatabase(qDriver);
    db.setDatabaseName(qDatabasename);
    db.setHostName(qHostname);
    db.setUserName(qUsername);
    db.setPassword(qPassword);
    if(!db.open())
    {
       qDebug()<<("Failed to open Database");
       return false;
    }
    else
    {
        qDebug()<<("Connected.....");
        return true;
    }
}
void Datenbank::discData()
{
    QString connection;
    connection=db.connectionName();
    db.close();
    db=QSqlDatabase();
    db.removeDatabase(connection);
    //db.removeDatabase(QSqlDatabase::defaultConnection);
    qDebug()<<("Disc.....");
}

Qt有驱动程序…http://doc.qt.io/qt-5/sql-driver.html,对于连接,您不需要创建类。您应该为此目的使用类。示例http://doc.qt.io/qt-5/sql-connecting.html显示了如何连接。Qt有许多示例和体面的文档。开始阅读类

  • QSqlQuery
  • QSqlDatabase