Название: QSqlQuery - получить результат команды Отправлено: neosapient от Июль 19, 2010, 12:08 Здравствуйте.
Есть таблица в БД на MySQL. Требуется обновить значение в определенной строке, либо добавить строку, если её не существует. Делаю так: Код: QSqlQuery query() Загвоздка в том, что для записей, которые уже существуют, я делаю UPDATE, а затем повторно пытаюсь создать запись. Какой из методов в классе QSqlQuery сообщит мне результат операции "UPDATE" ? Название: Re: QSqlQuery - получить результат команды Отправлено: dio от Июль 19, 2010, 12:29 Используйте функцию mysql - ROW_COUNT().
http://www.mysql.ru/docs/mysql-man-5.0-en/functions.html#function_row-count (http://www.mysql.ru/docs/mysql-man-5.0-en/functions.html#function_row-count) Название: Re: QSqlQuery - получить результат команды Отправлено: neosapient от Июль 19, 2010, 15:07 Используйте функцию mysql - ROW_COUNT(). Думаю, что эта функция мне не поможет, так как для операции UPDATE количество строк не меняетсяhttp://www.mysql.ru/docs/mysql-man-5.0-en/functions.html#function_row-count (http://www.mysql.ru/docs/mysql-man-5.0-en/functions.html#function_row-count) Название: Re: QSqlQuery - получить результат команды Отправлено: crossly от Июль 19, 2010, 15:20 а почему бы не проверить наличие записи а потом уже решать вставлять или добавлять... ??
Название: Re: QSqlQuery - получить результат команды Отправлено: neosapient от Июль 19, 2010, 16:42 а почему бы не проверить наличие записи а потом уже решать вставлять или добавлять... ?? Можно, так и буду делать, если ничего не выйдет с проверкой результатов UPDATE. Просто, в моем понимании sql-сервер сам делает эту проверку - не хочется по нескольку раз заставлять сервер делать проверки. :) Название: Re: QSqlQuery - получить результат команды Отправлено: SimpleSunny от Июль 19, 2010, 17:00 Посмотрите на int QSqlQuery::numRowsAffected () const.
Название: Re: QSqlQuery - получить результат команды Отправлено: neosapient от Июль 20, 2010, 11:48 Попробовал, для sql-команды UPDATE, метод QSqlQuery::numRowsAffected () всегда возвращает -1 (вне зависимости, существует запись или нет)
Так, что такой метод не подходит. Есть ещё идеи, или все же предеться делать проверку через SELECT ? Код: QSqlQuery query() Название: Re: QSqlQuery - получить результат команды Отправлено: SimpleSunny от Июль 20, 2010, 12:31 А попробуйте после query.exec() посмотреть, может какой-то ответ хранится все же.
Имею виду while (query.next()) query.value(); Странно что поиском не воспользовались, была уже такая тема http://www.prog.org.ru/topic_11459_0.html и последним сообщением приводится решение Название: Re: QSqlQuery - получить результат команды Отправлено: break от Июль 20, 2010, 17:17 а что в my_sql нет INSERT OR UPDATE STATEMENT ?
Название: Re: QSqlQuery - получить результат команды Отправлено: crossly от Июль 21, 2010, 08:53 нет
Название: Re: QSqlQuery - получить результат команды Отправлено: SimpleSunny от Июль 21, 2010, 11:27 Цитировать 12.2.5.3. INSERT ... ON DUPLICATE KEY UPDATE Syntax If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed. For example, if column a is declared as UNIQUE and contains the value 1, the following two statements have identical effect: Код
Название: Re: QSqlQuery - получить результат команды Отправлено: serg_hd от Июль 21, 2010, 15:54 Кхм... (http://lmgtfy.com/?q=mysql+%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C+%D0%BB%D0%B8%D0%B1%D0%BE+%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C)
Первая же ссылка и ответила :o |