cmysqlplugin.cpp cmysqlplugin.h cconfigdialog.h QSqlError QSettings QSqlQuery QMessageBox #include"cmysqlplugin.h" #include"cconfigdialog.h" #include<QSqlError> #include<QSettings> #include<QSqlQuery> #include<QMessageBox> boolcMySQLPlugin::connect() { QSettingssettings; m_db=QSqlDatabase::addDatabase("QMYSQL"); m_db.setHostName(settings.value(QString("plugins/%1/hostName").arg(pluginName())).toString()); m_db.setDatabaseName(settings.value(QString("plugins/%1/databaseName").arg(pluginName())).toString()); m_db.setUserName(settings.value(QString("plugins/%1/userName").arg(pluginName())).toString()); m_db.setPassword(settings.value(QString("plugins/%1/password").arg(pluginName())).toString()); return(open()); } boolcMySQLPlugin::init() { QSettingssettings; m_db=QSqlDatabase::addDatabase("QMYSQL"); m_db.setHostName(settings.value(QString("plugins/%1/hostName").arg(pluginName())).toString()); m_db.setDatabaseName(settings.value(QString("plugins/%1/databaseName").arg(pluginName())).toString()); m_db.setUserName(settings.value(QString("plugins/%1/userName").arg(pluginName())).toString()); m_db.setPassword(settings.value(QString("plugins/%1/password").arg(pluginName())).toString()); m_bConnected=m_db.open(); if(m_bConnected) { QStringListtables=m_db.tables(); if(tables.count()) { if(QMessageBox::question(0,"Tablesexist","Databasenotempty.\nExistingtableswillbedeleted.\nContinue?",QMessageBox::Yes|QMessageBox::No,QMessageBox::No)==QMessageBox::No) return(m_bConnected); } QSqlQueryquery(m_db); for(intz=0;z<tables.count();z++) query.exec(QString("DROPTABLE%1;").arg(tables.at(z))); if(!query.exec("CREATETABLE`kooky`.settings(`var`VARCHAR(100)NOTNULL,`val`VARCHAR(100)NOTNULL)ENGINE=InnoDB;")) { m_szLastError=query.lastError().text(); m_db.close(); m_bConnected=false; return(m_bConnected); } if(!query.exec("INSERTINTO`kooky`.settingsvalues('version','1.0');")) { m_szLastError=query.lastError().text(); m_db.close(); m_bConnected=false; return(m_bConnected); } } else m_szLastError=m_db.lastError().text(); return(m_bConnected); } boolcMySQLPlugin::open() { m_bConnected=m_db.open(); if(m_bConnected) { QSqlQueryquery(m_db); if(!query.exec("SELECT*FROMsettings")) { m_szLastError=query.lastError().text(); m_db.close(); m_bConnected=false; return(m_bConnected); } } else m_szLastError=m_db.lastError().text(); return(m_bConnected); } QStringcMySQLPlugin::lastError() { return(m_szLastError); } boolcMySQLPlugin::config() { cConfigDialogdlg; QSettingssettings; dlg.setHostname(settings.value(QString("plugins/%1/hostName").arg(pluginName())).toString()); dlg.setDatabase(settings.value(QString("plugins/%1/databaseName").arg(pluginName())).toString()); dlg.setUserName(settings.value(QString("plugins/%1/userName").arg(pluginName())).toString()); dlg.setPassword(settings.value(QString("plugins/%1/password").arg(pluginName())).toString()); if(dlg.exec()==QDialog::Accepted) { m_db.close(); settings.setValue(QString("plugins/%1/hostName").arg(pluginName()),dlg.hostname()); settings.setValue(QString("plugins/%1/databaseName").arg(pluginName()),dlg.database()); settings.setValue(QString("plugins/%1/userName").arg(pluginName()),dlg.userName()); settings.setValue(QString("plugins/%1/password").arg(pluginName()),dlg.password()); m_db.setHostName(settings.value(QString("plugins/%1/hostName").arg(pluginName())).toString()); m_db.setDatabaseName(settings.value(QString("plugins/%1/databaseName").arg(pluginName())).toString()); m_db.setUserName(settings.value(QString("plugins/%1/userName").arg(pluginName())).toString()); m_db.setPassword(settings.value(QString("plugins/%1/password").arg(pluginName())).toString()); return(open()); } return(m_bConnected); }