РС
Руслан Склюев18 июня 2020 г. 16:01
Простенький запрос
Здравствуйте! Установил PG12.
Тестовый запрос: INSERT INTO "public"."NameTable" ("FirstName", "SurName", "Nik") VALUES ('ff', 'cc', 'bb');
Как реализовать его в query.prepare? ругается на кавычки.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
l
- laei
- 23 апреля 2024 г. 16:19
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:10баллов,
- Очки рейтинга-10
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 9:50
EVA25 декабря 2023 г. 18:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil Academics20 апреля 2024 г. 14:45
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 апреля 2024 г. 9:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
Добрый день.
Нужно делать экранирование, поскольку кавычки в C++ это спец символы.
Напишите строку так
"INSERT INTO \"public\".\"NameTable\" ( \"FisrtName\", \"SurName\", \"Nik\") VALUES (:db, 'cc', \"bb\")"
"ОШИБКА: ошибка синтаксиса в конце\nLINE 1: EXECUTE \n ^\n(42601) QPSQL: Невозможно создать запрос"
QML debugging is enabled. Only use this in a safe environment.
Показывайте полный код, как формируете запрос, в том числе и C++ код.
P/S/ и когда будете вставлять в сообщение код, то воспользуйтесь диалогом для вставки кода, чтобы разметка правильно сформировалась.
Это одна из кнопок в тулбаре редактора.
Снимок.PNG
Будьте так любезны, вставляйте программный код с помощью этого дилога.
У меня нет времени, чтобы перепечатывать ваш код с картинки, чтобы объяснить вам вашу ошибку.
Какую ошибку выдаёт этот ваш запрос?
Поскольку в предыдущем сообщении у вас был запрос, в котором вы пытались сделать bind
и выглядел он иначе
"INSERT INTO \"public\".\"NameTable\" ( \"FisrtName\", \"SurName\", \"Nik\") VALUES (:db, 'cc', \"bb\")"
"ОШИБКА: ошибка синтаксиса в конце\nLINE 1: EXECUTE \n ^\n(42601) QPSQL: Невозможно создать запрос"
QML debugging is enabled. Only use this in a safe environment.
Вот пример из документации
Если вы пытаетесь сделать bind, то вам нужно правильно сформировать строку запроса, плюс указать bind привязки.
В данном случае наличие кавычек уже не нужно будет.
В статье, по которой вы это делаете были макросы, поэтому для конкатенации строк нужно было делать разделение кавычками. А вы очевидно формируете запрос сразу без макросов.
Так, добро... А как себя поведёт такой код?
error insert into public.NameTable
"INSERT INTO NameTable (FirstName, SurName, Nik) VALUES (:FName, :SName, :Nik)"
"ОШИБКА: ошибка синтаксиса (примерное положение: \"(\")\nLINE 1: EXECUTE ('Name', 'Surname', 'Nik')\n ^\n(42601) QPSQL: Невозможно создать запрос"
Ну теперь на значения ругается
А это уже очень плохо. Данный вариант кода должен был сработать.
Или не создалась таблица, или драйвер QPSQL коряво отрабатывает с PG12.
Лучше будет, если таблицы нет.
В случае с драйвером писать на багтрекер Qt Company тикет об ошибке и откатываться на более старую версию PG
На PG запрос должен выглядеть так INSERT INTO "public"."NameTable" ("FirstName", "SurName", "Nik") VALUES ('ff', 'cc', 'bb')
Тогда это должно было сработать - ссылка на комментарий
Также наличие public не принципиально, как и наличие кавычек
Сами документацию на PostgreSQL 12 почитайте, вот ссылка на INSERT
А вот пример из документации
У меня получилось, если создать строку, потом как вы написали, потом как тут - https://doc.qt.io/qt-5/qstring.html#initializing-a-string перебрать строку и заменить слэши на пробелы. Но это костыль?
Сдаётся мне, что у вас кодировка файла исходных кодов корявая.
Другой причины уже быть не может, иначе вам не пришлось бы заменять слэши. Дело в том, что слэш экранирует в код на C++ кавычки, чтобы это скомпилировалось нормально в строку.
А как ее сменить?
Пересоздал таблицу в базе - все заработало без кавычек и public. Большое спасибо!