crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Гость_Рядовой Смирнов_*
сообщение 8.1.2014, 4:09
Сообщение #1





Гости








    


Доброго времени суток всем. Люди, прошу помощи, так как уже битый час ломаю голову над одной штукой с БД в qt.
Не получается организовать редактирование записей таблицы. Я на этом форму впервые, вот кусочек кода, именно который отвечает за редактирование:
void MainWindow::on_pushButton_16_clicked()
{
QString str = ui->lineEdit_35->text();
QString str_1 = ui->lineEdit_36->text();
QString str_2 = QString("'") + ui->lineEdit_37->text() + QString("'");
QString str_3 = ui->lineEdit_38->text();
QString str_4 = ui->lineEdit_39->text();
QString str_5 = ui->lineEdit_40->text();

open_base();
QSqlQuery query;
query.exec(QString("UPDATE Priem_Pacientov SET FIO_p = ") + str_1 + QString(", Date = ") + str_2 + QString(", Name_b = ") + str_4 + QString(", dni_bolnich = ") + str_5 + QString(" WHERE (id_p = ") + str + QString(") and (id_v = ") + str_3 + QString(");"));
sdb.close();
ui->lineEdit_35->setText("");
ui->lineEdit_36->setText("");
ui->lineEdit_37->setText("");
ui->lineEdit_38->setText("");
ui->lineEdit_39->setText("");
ui->lineEdit_40->setText("");
on_pushButton_2_clicked();
}

Если кто-нибудь сможет мне объяснить в чем моя ошибка, буду очень благодарен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
crot26rus
  опции профиля:
сообщение 8.1.2014, 10:40
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 4.4.2010
Пользователь №: 1593

Спасибо сказали: 5 раз(а)




Репутация:   0  


Цитата
query.exec(QString("UPDATE Priem_Pacientov SET FIO_p = ") + str_1 + QString(", Date = ") + str_2 + QString(", Name_b = ") + str_4 + QString(", dni_bolnich = ") + str_5 + QString(" WHERE (id_p = ") + str + QString(") and (id_v = ") + str_3 + QString(");"));


Для начала проверь нет ли ошибок в синтаксисе твоего sql-запроса, например, так:

if( !query.exec( ... ) ){
   qDebug() << query.lastError().text();
}


или подключись к своей БД из сторонней программы и выполни запрос вручную.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.1.2014, 14:58
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Ужас какой-то а не код.
Рядовой Смирнов посмотри хоть примеры из комплекта Qt как с БД работать.
(намёк, QDataWidgetMapper, QSqlTableModel, QSqlQueryModel)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Рядовой Смирнов_*
сообщение 8.1.2014, 16:15
Сообщение #4





Гости








    


Цитата(Litkevich Yuriy @ 8.1.2014, 14:58) *
Ужас какой-то а не код.
Рядовой Смирнов посмотри хоть примеры из комплекта Qt как с БД работать.
(намёк, QDataWidgetMapper, QSqlTableModel, QSqlQueryModel)


Мне нужно сделать простое редактирование записи, через кнопку, ничего более сложного. Просто я запутался, и не могу найти ошибку. При нажатии кнопки запись не редактируется. А то о чем вы написали выше, я знаю, но у меня другая задача.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
arial
  опции профиля:
сообщение 8.1.2014, 21:26
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 39
Регистрация: 27.9.2009
Пользователь №: 1121

Спасибо сказали: 9 раз(а)




Репутация:   0  


Действительно, код весьма странный.
Делай примерно так:

    // Создаёшь запрос
    QSqlQuery query(database);

    // Здесь пишешь текст запроса.
    // Вместо значений полей в запросе ставишь знак вопроса
    const QString queryText = QLatin1String("UPDATE table SET some_field = ? "
                                            "WHERE condition_field = ?");

    // Подготавливаешь запрос
    if (!query.prepare(queryText)) {
        qDebug() << trUtf8("Здесь увидишь ошибку в запросе: %1").arg(query.lastError().text());
        return;
    }

    // Здесь добавляешь все переменные, участвующие в запросе
    // в том же порядке, в каком они следуют в запросе (те самые знаки вопроса)
    query.addBindValue(someFieldValue);
    query.addBindValue(conditionFieldValue);

    // Отправляешь запрос в базу данных
    if (!query.exec()) {
        qDebug() << trUtf8("Здесь тоже увидишь ошибку в запросе: %1").arg(query.lastError().text());
        return;
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 8.1.2014, 23:42
Сообщение #6





Гости








    


Всем спасибо, разобрался.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.4.2025, 9:20