crossplatform.ru

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


  Ответ в Qt, MySQL 8, JSON
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Василий К. Дата 27.2.2021, 10:29
 
Цитата(Алексей1153 @ 23.2.2021, 18:21) *
Цитата(Василий К. @ 23.2.2021, 18:11) *
происходит утечка памяти

интересно. А можно конкретный пример, на котором это повторяется? Я не сталкивался. Может быть, глюк конкретной версии компилятора. Вообще, никакой разницы быть не должно между стеком и new/delete


Воспроизвести не удалось. :) Тот же код, что и 4 года назад, сейчас работает нормально. Скорее всего , что-то исправили.
Алексей1153 Дата 23.2.2021, 17:21
 
Цитата(Василий К. @ 23.2.2021, 18:11) *
происходит утечка памяти

интересно. А можно конкретный пример, на котором это повторяется? Я не сталкивался. Может быть, глюк конкретной версии компилятора. Вообще, никакой разницы быть не должно между стеком и new/delete

Василий К. Дата 23.2.2021, 16:11
 
Цитата(Алексей1153 @ 20.2.2021, 19:06) *
Василий К., а с другими типами нормально работает? Так то вроде всё нормально выглядит

Раскрывающийся текст
Разве что динамика тут не к месту, можно на стеке работать

QSqlQuery q(db);


Да, с другими типами работает абсолютно корректно. Но как только в выборке появляется поле с типо json, результат - ноль строк. И никаких сообщений об ошибках. Причем, если поля json заданы значением null, то выборка работает. На счет динамики - оказывается, если не использовать указатель, происходит утечка памяти :rolleyes: . Давно как-то с этим столкнулся, вроде все нормально а память утекает. После долгих свистоплясок сделал открытие, а после еще где-то вычитал, что с QSqlQuery только через указатель.
Алексей1153 Дата 20.2.2021, 18:06
  Василий К., а с другими типами нормально работает? Так то вроде всё нормально выглядит

Раскрывающийся текст
Разве что динамика тут не к месту, можно на стеке работать

QSqlQuery q(db);
Василий К. Дата 19.2.2021, 15:00
  Добрый день!

У меня есть таблица в базе MySQL 8.0.23 следующего типа

create table s_salary_shift (f_id integer primary key auto_increment, f_formula json);
insert into s_salary_shift(f_formula, '{"fixed":5000}'


И есть вот такой запрос

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("cafe5");
    db.setUserName("root");
    db.setPassword("******");
    if (!db.open()) {
        return;
    }
    QSqlQuery *q = new QSqlQuery(db);
    q->prepare("select f_formula from s_salary_shift where f_id=:f_id");
    q->bindValue(":f_id", 1);
    q->exec();
    if (q->next()) {
        qDebug() << q->value(0);
    } else {
        qDebug() << "Empty result";
    }


так вот, из-за поля типа json всегда пустая выборка, если использоваить q->prepear(). Если же сразу сделать q->exec("select f_formula frmo s_salary_shift where f_id=1"), то выборка не пустая. Походу, это глюк Qt или я ошибаюсь?
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 2.8.2025, 3:42