在qt

时间:2015-07-20 19:34:42

标签: c++ qt user-interface

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

2 个答案:

答案 0 :(得分:0)

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

  • QSqlQuery
  • QSqlDatabase

答案 1 :(得分:0)

我可以给你我班级的源代码,用于连接我的数据库。我将我的特定数据库数据保存在一个txt文件中,所以如果我将它安装在另一台计算机上,我可以让txt文件适合。 标题为:

#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.....");

}