Хранилища Subversion OpenInventory

Редакция

Редакция 59 | Редакция 73 | К новейшей редакции | Авторство | Сравнить с предыдущей | Последнее изменение | Открыть журнал | Скачать | RSS

#include "mysql.h"

MySql::MySql(QObject *parent) :
    QObject(parent)
{
}



/************************************************
** Ôóíêöèÿ ïðèñâîåíèÿ çíà÷åíèÿ èìåíè áàçû äàííûõ
**
************************************************/




void MySql::setDatabaseName(QString name){
    MySql::sqlDatabaseName = name;
}


bool MySql::connect(){
    db = QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName(MySql::sqlHostName);
    db.setDatabaseName(MySql::sqlDatabaseName);
    db.setUserName(MySql::sqlUserName);
    db.setPassword(MySql::sqlPassword);
    bool ok = db.open();
    if (ok) return true;
    else {
          MySql::mysqlLastError = db.lastError().text();
        return false; }

    /*
    pdb->setHostName(hostName);
    pdb->setDatabaseName(baseName);
    pdb->setUserName(userName);
    pdb->setPassword(password);
    bool ok = pdb->open();

if (!ok) {
                            QMessageBox::critical( // Äèàëîã ñ ñîîáùåíèåì îá îøèáêå.
                                                                            QWidget(this->parent()),                      // Ðîäèòåëüñêèé âèäæåò.
                                                                            QObject::tr("Database Error"),   // Çàãîëîâîê.
                                                                            db.lastError().text());          // Òåêñò ñîîáùåíèÿ.
                     }
  */


    return true;
}


void MySql::setUserName(QString uname){
    MySql::sqlUserName = uname;
}

void MySql::setPassword(QString passwrd){
    MySql::sqlPassword = passwrd;
}


void MySql::setHostName(QString hname){
    MySql::sqlHostName = hname;
}

bool  MySql::createTable(SqlTable* table){ // ñîçäàåò â áàçå äàííûõ òàáëèöó
QSqlQuery q;
bool ok;
ok = q.prepare(table->sqlString());
if(!ok) {
    MySql::mysqlLastError = q.lastError().text();
    return false;}
ok = q.exec();
if(!ok) {
    MySql::mysqlLastError = q.lastError().text();
    return false;}
else return true;
}



QString MySql::lasError(){

    return MySql::mysqlLastError;
}



/************************************************
** Ôóíêöèÿ ñîçäàåò íåîáõîäèìûå òàáëèöû â áàçå äàííûõ
** äëÿ õðàíåíèÿ íàçâàíèÿ è îïèñàíèÿ êëàññîâ
** (Òàáëèöà ListOfClasses è Òàáëèöà DescriptionOfClasses)
************************************************/



bool MySql::createDataBase(){
    SqlTable* tbl;
    TableField* fld;
    if (!db.isOpen()){
        MySql::mysqlLastError = tr("Database is not open!");
        return false;
    }
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó


    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó

   //     delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return false;                               // âûâîäèì îøèáêó
    }


    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
 //       delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return true;                                // ñîîáùàåì îá óñïåõå

    }

    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó



    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó


    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó

   //     delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return false;                               // âûâîäèì îøèáêó
    }


    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
 //       delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return true;                                // ñîîáùàåì îá óñïåõå

    }





}




bool MySql::createListOfClassesTable(){

    SqlTable* tbl;
    TableField* fld;
    if (!db.isOpen()){
        MySql::mysqlLastError = tr("Database is not open!");
        return false;
    }
    tbl = new SqlTable(tr("ListOfClasses"));        // ñîçäàäèì òàáëèöó ñ èìåíåì ListOfClasses äëÿ õðàíåíèÿ ñïèñêà êëàññîâ
    fld = new TableField(tr("ClassName"), tbl);          // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà êëàññîâ, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("ClassAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("TableWhithInstance"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New class instance"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó


    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó

   //     delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return false;                               // âûâîäèì îøèáêó
    }


    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
 //       delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return true;                                // ñîîáùàåì îá óñïåõå

    }



}




bool MySql::createDescriptionOfClassesTable(){ // ñîçäàåò íåîáõîäèìóþ òàáëèöó â áàçå äàííûõ äëÿ õðàíåíèÿ îïèñàíèÿ êëàññîâ (Òàáëèöà DescriptionOfClasses)
    SqlTable* tbl;
    TableField* fld;
    if (!db.isOpen()){
        MySql::mysqlLastError = tr("Database is not open!");
        return false;
    }
    tbl = new SqlTable(tr("DescriptionOfClasses")); // ñîçäàäèì òàáëèöó ñ èìåíåì DescriptionOfClassess äëÿ õðàíåíèÿ îïèñàíèÿ ïîëåé êëàññîâ
    fld = new TableField(tr("FieldName"), tbl);     // ýòî âòîðîå ïîëå òàáëèöû áóäåò õðàíèòü èìåíà ïîëåé, ïåðâîå ïîëå ID óæå èìååòñÿ â íîâîé òàáëèöå (îíî ñîçäàåòñÿ ïî óìîë÷àíèþ)
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New field"));          // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("FieldAlias"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû ïîëåé êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("New field alias"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("FieldType"), tbl);     // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("CHAR(30)"));           // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("DefaultValue"), tbl);  // ýòî ÷åòâåðòîå ïîëå òàáëèöû áóäåò òèï ïîëÿ êëàññà
    fld->setNotNull(false);                         // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("NULL"));               // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó

    fld = new TableField(tr("ClassIdentifer"), tbl);    // ýòî ïÿòîå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(false);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("INT(10)"));                   // òèï ïîëÿ - öåëîå ÷èñëî
    fld->setDefaultValue(tr("NULL"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó



    fld = new TableField(tr("Comment"), tbl);    // ýòî òðåòüå ïîëå òàáëèöû áóäåò õðàíèòü ïñåâäîíèìû êëàññîâ
    fld->setNotNull(true);                          // ïîëå íå ìîæåò áûòü ïóñòûì
    fld->setType(tr("CHAR(30)"));                   // òèï ïîëÿ - ñòðîêà èç 30 ñèìâîëîâ
    fld->setDefaultValue(tr("without comments"));    // çíà÷åíèå ïîëÿ ïî óìîë÷àíèþ
    tbl->append(fld);                               // äîáàâëÿåì ïîëå â òàáëèöó


    if(!MySql::createTable(tbl)){                   // åñëè íå óäàåòñÿ ñîçäàòü òàáëèöó

   //     delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return false;                               // âûâîäèì îøèáêó
    }


    else {                                          // òàáëèöó óñïåøíî ñîçäàíà
 //       delete fld;
        delete tbl;                                 // ÷èñòèì çà ñîáîé
        return true;                                // ñîîáùàåì îá óñïåõå

    }


}