ayanda83
23rd February 2014, 18:58
Hi there everyone. I'm writing an app that connects to an SQLite database. The connection to the database is fine but the problem come when I try updating the same database from a different class. The database does not update. Can somebody please tell me how one can reference one database from different classes in the program. Do I need to open the database every time I want to reference the database. here is my code.
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("Study Planner");
JobsAtHandModel = new QStringListModel(this);
dataBase = QSqlDatabase::addDatabase("QSQLITE");
dataBase.setDatabaseName("C:/My_Databases/Unisa_Database/UnisaDB.db");
dataBase.open(); //This works
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
}
void MainWindow::checkJobsAtHand()
{
/*QString sqlStr(QString("SELECT Name, Surname, Address, ContactNo FROM ClientTable")), tempStr;
QSqlQuery qry;
qry.prepare(sqlStr);
if(qry.exec())
{
while(qry.next())
{
tempStr = QString("%1 %2 | %3 | %4").arg(qry.value(0).toString()).arg(qry.value(1).to String())
.arg(qry.value(2).toString()).arg(qry.value(3).toS tring());
job.append(tempStr);
}
}
JobsAtHandModel->setStringList(job);
ui->lcdNumber->display(job.count());*/
}
void MainWindow::checkJobsCompleted()
{
}
void MainWindow::on_AddCourseBtn_clicked()
{
NewModule* newMod = new NewModule(this);
newMod->setModal(true);
newMod->exec();
}
DIFFERENT CLASS
#include "newmodule.h"
#include "ui_newmodule.h"
NewModule::NewModule(QWidget *parent) :
QDialog(parent),
ui(new Ui::NewModule)
{
ui->setupUi(this);
}
NewModule::~NewModule()
{
delete ui;
}
void NewModule::on_pushButton_clicked()
{
}
void NewModule::on_SubmitBtn_clicked()
{
QSqlDatabase dataBase = QSqlDatabase::addDatabase("QSQLITE");
dataBase.setDatabaseName("C:/My_Databases/Unisa_Database/UnisaDB.db");
dataBase.open();
QString sqlStr(QString("INSERT INTO Modules VALUES(%1, %2, %3, %4").arg(ui->moduleCodeLE->text())
.arg(ui->moduleNameLE->text()).arg(ui->LectureLE->text()).arg(ui->contactNo->text()));
QSqlQuery qry;
qry.prepare(sqlStr);
qry.exec(); //This doesn't work
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("Study Planner");
JobsAtHandModel = new QStringListModel(this);
dataBase = QSqlDatabase::addDatabase("QSQLITE");
dataBase.setDatabaseName("C:/My_Databases/Unisa_Database/UnisaDB.db");
dataBase.open(); //This works
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
}
void MainWindow::checkJobsAtHand()
{
/*QString sqlStr(QString("SELECT Name, Surname, Address, ContactNo FROM ClientTable")), tempStr;
QSqlQuery qry;
qry.prepare(sqlStr);
if(qry.exec())
{
while(qry.next())
{
tempStr = QString("%1 %2 | %3 | %4").arg(qry.value(0).toString()).arg(qry.value(1).to String())
.arg(qry.value(2).toString()).arg(qry.value(3).toS tring());
job.append(tempStr);
}
}
JobsAtHandModel->setStringList(job);
ui->lcdNumber->display(job.count());*/
}
void MainWindow::checkJobsCompleted()
{
}
void MainWindow::on_AddCourseBtn_clicked()
{
NewModule* newMod = new NewModule(this);
newMod->setModal(true);
newMod->exec();
}
DIFFERENT CLASS
#include "newmodule.h"
#include "ui_newmodule.h"
NewModule::NewModule(QWidget *parent) :
QDialog(parent),
ui(new Ui::NewModule)
{
ui->setupUi(this);
}
NewModule::~NewModule()
{
delete ui;
}
void NewModule::on_pushButton_clicked()
{
}
void NewModule::on_SubmitBtn_clicked()
{
QSqlDatabase dataBase = QSqlDatabase::addDatabase("QSQLITE");
dataBase.setDatabaseName("C:/My_Databases/Unisa_Database/UnisaDB.db");
dataBase.open();
QString sqlStr(QString("INSERT INTO Modules VALUES(%1, %2, %3, %4").arg(ui->moduleCodeLE->text())
.arg(ui->moduleNameLE->text()).arg(ui->LectureLE->text()).arg(ui->contactNo->text()));
QSqlQuery qry;
qry.prepare(sqlStr);
qry.exec(); //This doesn't work
}