LinuxForum.Fans
Тема

Прошу помощи с добавлением в Базу Данных. Qt

Автор: nik2281 8 сообщений 2122 просмотров
#223654

Всем привет=) Пишу программу на qt по обслуживанию базы данных (БД) и столкнулся с такой проблемой: не могу добавить запись в таблицу. В чём ошибка? В SQL-запросе или в способе его вызова? Альтернативные варианты по добавлению приветствуются. Спасибо за внимание=)

Wind1 - окно для ввода добавляемой в БД записи.
model... - указатели на модели для соответствующих таблиц БД


Wind1.h

text

#ifndef WIND1_H
#define WIND1_H

#include <QWidget> #include<QSqlRelationalTableModel> #include<QSqlQuery>

namespace Ui { class Wind1; }

class Wind1 : public QWidget { Q_OBJECT

public: explicit Wind1(QWidget *parent = 0);

QSqlRelationalTableModel *modelabonents1; QSqlRelationalTableModel *modelLgoty1; QSqlRelationalTableModel *modelLgotniki1; QSqlRelationalTableModel *modelTarify1; QSqlRelationalTableModel *modelUchiot1; ~Wind1(); int num; QSqlQuery query; private slots: void on_pushButton_clicked();

private: Ui::Wind1 *ui; };

#endif // WIND1_H

Wind1.cpp

text

void Wind1::on_pushButton_clicked()
{
    switch(num)
    {
    case 0:
        query.exec("INSERT INTO 'MyBase'." + modelabonents1->tableName() + "(kod_abonenta, FIO, adres, ploshad_doma, kolvo_propisannyh,kolvl_lgotnikov, Uchastok) VALUES (" + ui->lineEdit->text() + ',' + ui->lineEdit_2->text() + ',' + ui->lineEdit_3->text() + ',' + ui->lineEdit_4->text() + ',' + ui->lineEdit_5->text() + ',' + ui->lineEdit_6->text() + ',' + ui->lineEdit_7->text() + ");");
        break;
    case 1:    
        query.exec("INSERT INTO 'MyBase'." + modelLgotniki1->tableName() + "(kod_abonenta, FIO_lgotnika, kod_kategorii) VALUES (" + ui->lineEdit->text() + ',' + ui->lineEdit_2->text() + ',' + ui->lineEdit_3->text() + ");");           
        break;
    case 2:
        query.exec("INSERT INTO 'MyBase'." + modelLgoty1->tableName() + "(kod_kategorii,osnovanie,koefficient) VALUES (" + ui->lineEdit->text() + ',' + ui->lineEdit_2->text() + ',' + ui->lineEdit_3->text() + ");");
        break;
    case 3:
        query.exec("INSERT INTO 'MyBase'." + modelTarify1->tableName() + "(kod_tarifa,god,mesyac,tarif) VALUES (" + ui->lineEdit->text() + ',' + ui->lineEdit_2->text() + ',' + ui->lineEdit_3->text() + ',' + ui->lineEdit_4->text() + ");");
        break;
    case 4:
        query.exec("INSERT INTO 'MyBase'." + modelUchiot1->tableName() + "(kod_abonenta,pokazaniya_schyotchika,data_snyatiya,kod_tarifa) VALUES (" + ui->lineEdit->text() + ',' + ui->lineEdit_2->text() + ',' + ui->lineEdit_3->text() + ',' + ui->lineEdit_4->text() + ");");
        break;
    }
    
}
#223658

QSqlQuery::SqlEror() спасёт отца русской демократии...

на будущее: QT=QuickTime, тут говорим о Qt

#223659

благодарю smile

#223666

такого метода нет :o есть QSqlQuery::lastError(), но текст ошибки вытащить не получается...смотрел на форумах, везде пишут так:

text

QSqlQuery q;
QDebug() << q.lastError().text();

но Qt не может преобразовать в текст...может какую библиотеку я не подключил? Подключены

text

#include <QMessageBox>
#include <QString>
#include <QWidget>
#include<QSqlRelationalTableModel>
#include<QSqlQuery>
#223783
nik2281 написал:
такого метода нет есть QSqlQuery::lastError(), но текст ошибки вытащить не получается...смотрел на форумах, везде пишут так:

нуда... описался...

nik2281 написал:
но Qt не может преобразовать в текст...может какую библиотеку я не подключил? Подключены

что это значит? ошибка компиляции? какая? или во время выполнения?

#223786

на этапе компиляции.

text

../rgr/wind1.cpp: В функции-члене «void Wind1::on_pushButton_clicked()»:
../rgr/wind1.cpp:149:16: ошибка: invalid use of incomplete type «struct QDebug»
/usr/include/qt4/QtCore/qglobal.h:1661:7: ошибка: forward declaration of «struct QDebug»
../rgr/wind1.cpp:149:37: ошибка: invalid use of incomplete type «struct QSqlError»
/usr/include/qt4/QtSql/qsqldatabase.h:57:7: ошибка: forward declaration of «struct QSqlError»
#223787

ну да... не включили

text

#include <QDebug>
#include <QSqlError>
#223788

Спасибо=) теперь работает, дальше как-нибудь уже сам)

Войдите или зарегистрируйтесь, чтобы ответить.