Запрос вставки, с помощью QSqlQuery |
Здравствуйте, гость ( Вход | Регистрация )
Запрос вставки, с помощью QSqlQuery |
AD |
28.3.2011, 11:12
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Есть запросы вставки записи в таблицу, подобные данной:
Проверяю. ins = true. При этом в саму таблицу ничего не добавилось. Как такое возможно? Естественно, что при закрытии приложения никаких удалений не делаю.
Сообщение отредактировал AD - 28.3.2011, 11:12 |
|
|
MJIbIu |
28.3.2011, 15:18
Сообщение
#2
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
|
|
|
AD |
28.3.2011, 15:40
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
MJIbIu |
28.3.2011, 15:52
Сообщение
#4
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
А попробуй как вот так query.prepare(QString("insert into nameDB.ScriptLayer(ScriptItemId, LayerNameId) values(%1, -1)").arg(id)); Что за nameDB? У меня ведь запрос-то выполняется... По какой-то причине при выходе из БД удаляется запись. Непонятно почему. query.prepare("INSERT INTO ИмяБД.ИмяТаблице VALUES (:value1,:value2);"); query.bindValue(":valut1", "значение 1"); query.bindValue(":value", "значение 2"); я делаю так Если бы у тебя запрос бы выполнялся тогда бы и в БД заносились бы данные. По какой-то причине при выходе из БД удаляется запись. Ты с какой СУБД работаешь ? |
|
|
AD |
28.3.2011, 16:36
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
query.prepare("INSERT INTO ИмяБД.ИмяТаблице VALUES (:value1,:value2);"); query.bindValue(":valut1", "значение 1"); query.bindValue(":value", "значение 2"); я делаю так Если бы у тебя запрос бы выполнялся тогда бы и в БД заносились бы данные. При добавлении я вижу, что в таблице появилась новая запись, значит, все же, добавилась. На счет ИмяДБ хотел уточнить. Я правильно понимаю, что имеется в виду имя соединения или же имеется в виду имя следующее - QSqlDatabase::database("connectionName").databaseName(); Ты с какой СУБД работаешь ? SQLiteAdmin в качестве СУБД. http://sqliteadmin.orbmu2k.de/ Сообщение отредактировал AD - 28.3.2011, 16:37 |
|
|
MJIbIu |
28.3.2011, 17:03
Сообщение
#6
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
При добавлении я вижу, что в таблице появилась новая запись, значит, все же, добавилась. На счет ИмяДБ хотел уточнить. Я правильно понимаю, что имеется в виду имя соединения или же имеется в виду имя следующее - QSqlDatabase::database("connectionName").databaseName(); Ты с какой СУБД работаешь ? SQLiteAdmin в качестве СУБД. http://sqliteadmin.orbmu2k.de/ create database ИмяБД character set utf8; вот что я имел виду если у тебя создается тогда это не важно Важнее то что у тебя после выхода твоей проги не сохраняются данные. Выложи полный код. И покопайся в СУБД мб она как то настроено хитро всяко бывает http://www.mysql.ru/docs/gruber/mg23.html КОГДА СДЕЛАННЫЕ ИЗМЕНЕНИЯ СТАНОВЯТСЯ ПОСТОЯННЫМИ Смахивает на твою проблему Сообщение отредактировал MJIbIu - 28.3.2011, 16:59 |
|
|
AD |
29.3.2011, 11:24
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
http://www.mysql.ru/docs/gruber/mg23.html КОГДА СДЕЛАННЫЕ ИЗМЕНЕНИЯ СТАНОВЯТСЯ ПОСТОЯННЫМИ Смахивает на твою проблему Да. Похоже на данную проблему. Как это в СУБД решить, пока не нашел.
res = true, res_commit = false; И в БД не попадает при выходе из приложения. В err данном случае попадает следующая фраза Цитата cannot commit transaction - SQL statements in progress Unable to fetch row Данный код тоже выдает сообщение предупреждение
Цитата cannot commit transaction - SQL statements in progress Unable to commit transaction. Есть варианты как сделать? Копаюсь в ассистенте. Пока ничего не нашел.
|
|
|
AD |
29.3.2011, 15:17
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Буду рад, если поможете. Не понимаю, как сделать правильный commit транзакции. Возвращает ошибку, указанную в предыдущем посте. Повторюсь, что это необходимо, чтобы БД приняла данные, т.е. чтобы данные сохранились в БД. На данный момент получается такая фигня, что я вижу добавленные данные во время работы приложения. Но как только я перезапускаю приложение, данных нет. Сделать так, чтобы commit в итоге стал true не получается....
|
|
|
MJIbIu |
30.3.2011, 13:07
Сообщение
#9
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
Буду рад, если поможете. Не понимаю, как сделать правильный commit транзакции. Возвращает ошибку, указанную в предыдущем посте. Повторюсь, что это необходимо, чтобы БД приняла данные, т.е. чтобы данные сохранились в БД. На данный момент получается такая фигня, что я вижу добавленные данные во время работы приложения. Но как только я перезапускаю приложение, данных нет. Сделать так, чтобы commit в итоге стал true не получается.... bool QSqlDatabase::commit () Выполняет транзакцию в базу данных, если она поддерживается драйвером и уже была начата транзакция посредством transaction(). Возвращает true в случае успеха операции. В противном случае возвращает false. Замечание: Для некоторых баз данных фиксация транзакции завершится неудачно и возвратит false, если использовалась active query базы данных для SELECT. Сделайте запрос inactive перед выполнением фиксации транзакции. http://www.javatalks.ru/ntopic9646.php конечно там на java ну смысл я думаю тот же |
|
|
Текстовая версия | Сейчас: 11.12.2024, 12:48 |