oleja1ee7
@oleja1ee7

Виноваты атрибуты на русском?

Не добавляется запись в БД, может ли быть виной то, что в ней атрибуты на русском языке?

query.prepare("INSERT INTO 'ships' ('Номер_судопотока', 'Наименование_судна', 'Flag','Проект_судна','Состав_судна','Проект_состава','Судовладелец',"
                                        "'Груз_пассажиры','Тоннаж_балласт','Осадка_см','Пункт_отправления','Местоположение_река_км_сх_','Дата_выхода_из_пункты_отправления',"
                                        "'Пункт_назначения','Местоположение_река_км_сх_2','Дата_прибытия_в_пункт_назначения','Дата_отметки_судна_при_пересечении_границы_бассейна',"
                                        "'Наименование_бассейна','Диспетчер') "
                  "VALUES (:c1, :c2, :c3,:c4,:c5,:c6,:c7,:c8,:c9,:c10,:c11,:c12,:c13,:c14,:c15,:c16,:c17,:c18,:c19)");

            query.bindValue(":c1", N_sp);
            query.bindValue(":c2", ship_n);
            ...
            query.bindValue(":c19", dispetcher);

            query.exec();
            if (!query.exec())
            {
                qDebug() << "Запись не добавлена";
            }
            model->setTable("ships");
            model->select();
            ui->tableView->setModel(model);
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
IGHOR
@IGHOR Куратор тега Qt
Qt/C++ DEV/CTO
А тут смотрели? query.lastError().text()
И должен быть только один вызов query.exec()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
oleja1ee7
@oleja1ee7 Автор вопроса
Помимо последней ошибки узнал еще её номер
qDebug() << query.lastError().number()<< query.lastError().text();

Оттуда накопал ошибку 1064, которая ничего не прояснила, но методом тыка понял что беда в апострофах, которыми обозначил атрибуты. Убрал и их.
Следующая ошибка это было отсутствие первичного ключа в таблице.
и несоответствие приведенных типов, я обозначал их как QString, но в таблице были 3 даты и 1 численный.
Теперь все просто прекрасно. Спасибо за помощь, Игорь Джулай
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы