2015-07-20 51 views
-1

HI我是使用qt開發Gui的初學者。 我有一個項目,我必須使用mysql數據庫。我想知道如何創建一個類爲我連接到數據庫和查詢,以便這將是容易的,我調用這個類在不同的窗口和執行SQL查詢在qt中創建數據庫連接的類

+0

是啊,我跟着以該: –

+0

是的,我跟着以該: QSqlDatabase DB = QSqlDatabase :: addDatabase( 「QMYSQL」); db.setHostName(「localhost」); db.setDatabaseName(「calendar」); db.setUserName(「root」); db.setPassword(「」); 如果 { qDebug()<<( 「無法打開數據庫」)(db.open()!); 返回false; } 別的 { qDebug()<<( 「已連接」); 返回true; 我有不同的窗口,我需要執行一些查詢。我怎樣才能做到這 –

+0

作爲回答,QSqlQuery是爲此目的......,創建查詢,執行它們,讀取數據,將其寫入控制 –

回答

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文件。應該是exaxtly你在找什麼

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

}