crossplatform.ru

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


  Ответ в firebird, insert возвращает ошибку -1, строку вставляет
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 10 сообщений [ в обратном порядке ]
Iron Bug Дата 15.5.2015, 10:42
  insert вернул true. в этом случае незачем читать что-то из lastError, там может быть что угодно.
gvenihvivar Дата 15.5.2015, 10:00
  lanz спасибо тебе!!!

Более менее рабочий вариант
 QSqlQuery query2(db);
            query2.prepare("INSERT INTO table2 (id, pump) "
                          "VALUES (:id, :pump)");
            query2.bindValue(":id", 1121);
            query2.bindValue(":pump", 23);

            qDebug() << " exec insert "<< query2.exec()
                            <<  " error "<< query2.lastError().text() << query2.lastError().number();


Результат вывода "exec insert true error " " -1"

Неопределенная ошибка осталась, но по крайней мере отчитывается корректно.

В документации написано "Returns the database-specific error number, or -1 if it cannot be determined." "-1" это не смертельно или лучше и с ним разобраться?

lanz Дата 15.5.2015, 9:12
  Возможно дело в том, что:
http://doc.qt.io/qt-4.8/qsqlquery.html#QSqlQuery-2
Цитата
Constructs a QSqlQuery object using the SQL query and the database db. If db is not specified, or is invalid, the application's default database is used. If query is not an empty string, it will be executed.

А затем ваш exec пытается вставить второй элемент с таким же id. Попробуйте использовать prepare.
gvenihvivar Дата 15.5.2015, 9:05
 
Цитата(Iron Bug @ 15.5.2015, 8:44) *
а нафига там кавычки стоят, если поля типа int?


Без кавычек программа ведет себя точно также. Запрос возвращает false, но строка в таблицу добавляется.
Это уже от безысходности. Не знаю, что ему надо.
Iron Bug Дата 15.5.2015, 8:44
  а нафига там кавычки стоят, если поля типа int?
gvenihvivar Дата 14.5.2015, 15:13
  qt sdk 4.8
firebird 2.5 и ibexpert

Создала базу данных и таблицу. Вставляя строки программно обратила внимание, что insert возвращает постоянно false, а строки вставляются исправно. К базе данных подключилось нормально. Команды update, delete, select работают правильно. Вот так выглядит запрос.
Оба поля int. id primary key.

QSqlQuery query2("INSERT INTO table2 (id, pump) VALUES ('2', '2')", db);
       qDebug() << " exec insert "<< query2.exec()
                     <<  " error "<< query2.lastError().text() << query2.lastError().number();


Кто-то сталкивался с таким? Может, это просто баг?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 1:38