Здравствуйте, гость ( Вход | Регистрация )
|
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, 11:12) Link query.prepare(QString("insert into ScriptLayer(ScriptItemId, LayerNameId) values(%1, -1)").arg(id)); А попробуй как вот так query.prepare(QString("insert into nameDB.ScriptLayer(ScriptItemId, LayerNameId) values(%1, -1)").arg(id)); |
|
|
|
|
AD |
28.3.2011, 15:40
Сообщение
#3
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(MJIbIu @ 28.3.2011, 16:18) Link А попробуй как вот так query.prepare(QString("insert into nameDB.ScriptLayer(ScriptItemId, LayerNameId) values(%1, -1)").arg(id)); Что за nameDB? У меня ведь запрос-то выполняется... По какой-то причине при выходе из БД удаляется запись. Непонятно почему. |
|
|
|
|
MJIbIu |
28.3.2011, 15:52
Сообщение
#4
|
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0
|
Цитата(AD @ 28.3.2011, 15:40) Link Цитата(MJIbIu @ 28.3.2011, 16:18) Link А попробуй как вот так 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, 15:40) Link По какой-то причине при выходе из БД удаляется запись. Ты с какой СУБД работаешь ? |
|
|
|
|
AD |
28.3.2011, 16:36
Сообщение
#5
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(MJIbIu @ 28.3.2011, 16:52) Link query.prepare("INSERT INTO ИмяБД.ИмяТаблице VALUES (:value1,:value2);"); query.bindValue(":valut1", "значение 1"); query.bindValue(":value", "значение 2"); я делаю так Если бы у тебя запрос бы выполнялся тогда бы и в БД заносились бы данные. При добавлении я вижу, что в таблице появилась новая запись, значит, все же, добавилась. На счет ИмяДБ хотел уточнить. Я правильно понимаю, что имеется в виду имя соединения или же имеется в виду имя следующее - QSqlDatabase::database("connectionName").databaseName(); Цитата(MJIbIu @ 28.3.2011, 16:52) Link Ты с какой СУБД работаешь ? SQLiteAdmin в качестве СУБД. Link Сообщение отредактировал AD - 28.3.2011, 16:37 |
|
|
|
|
MJIbIu |
28.3.2011, 17:03
Сообщение
#6
|
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0
|
Цитата(AD @ 28.3.2011, 17:36) Link При добавлении я вижу, что в таблице появилась новая запись, значит, все же, добавилась. На счет ИмяДБ хотел уточнить. Я правильно понимаю, что имеется в виду имя соединения или же имеется в виду имя следующее - QSqlDatabase::database("connectionName").databaseName(); Цитата(MJIbIu @ 28.3.2011, 16:52) Link Ты с какой СУБД работаешь ? SQLiteAdmin в качестве СУБД. Link create database ИмяБД character set utf8; вот что я имел виду если у тебя создается тогда это не важно Важнее то что у тебя после выхода твоей проги не сохраняются данные. Выложи полный код. И покопайся в СУБД мб она как то настроено хитро всяко бывает Link КОГДА СДЕЛАННЫЕ ИЗМЕНЕНИЯ СТАНОВЯТСЯ ПОСТОЯННЫМИ Смахивает на твою проблему Сообщение отредактировал MJIbIu - 28.3.2011, 16:59 |
|
|
|
|
AD |
29.3.2011, 11:24
Сообщение
#7
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(MJIbIu @ 28.3.2011, 18:03) Link Link КОГДА СДЕЛАННЫЕ ИЗМЕНЕНИЯ СТАНОВЯТСЯ ПОСТОЯННЫМИ Смахивает на твою проблему Да. Похоже на данную проблему. Как это в СУБД решить, пока не нашел. 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
|
Цитата(AD @ 29.3.2011, 16:17) Link Буду рад, если поможете. Не понимаю, как сделать правильный commit транзакции. Возвращает ошибку, указанную в предыдущем посте. Повторюсь, что это необходимо, чтобы БД приняла данные, т.е. чтобы данные сохранились в БД. На данный момент получается такая фигня, что я вижу добавленные данные во время работы приложения. Но как только я перезапускаю приложение, данных нет. Сделать так, чтобы commit в итоге стал true не получается.... bool QSqlDatabase::commit () Выполняет транзакцию в базу данных, если она поддерживается драйвером и уже была начата транзакция посредством transaction(). Возвращает true в случае успеха операции. В противном случае возвращает false. Замечание: Для некоторых баз данных фиксация транзакции завершится неудачно и возвратит false, если использовалась active query базы данных для SELECT. Сделайте запрос inactive перед выполнением фиксации транзакции. Link конечно там на java ну смысл я думаю тот же |
|
|
|
|
AD |
30.3.2011, 13:26
Сообщение
#10
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(MJIbIu @ 30.3.2011, 14:07) Link bool QSqlDatabase::commit () Выполняет транзакцию в базу данных, если она поддерживается драйвером и уже была начата транзакция посредством transaction(). Возвращает true в случае успеха операции. В противном случае возвращает false. Замечание: Для некоторых баз данных фиксация транзакции завершится неудачно и возвратит false, если использовалась active query базы данных для SELECT. Сделайте запрос inactive перед выполнением фиксации транзакции. Link конечно там на java ну смысл я думаю тот же Я умею читать ассистент. setAutocommit - в Qt нет. Сделал для запроса clear(), не прокатило. Что еще возможно? Данную ссылку уже сам находил - не помогло. Запрос делаю неактивным, но в БД запись не попадает. Сообщение отредактировал AD - 31.3.2011, 11:37 |
|
|
|
|
AD |
31.3.2011, 11:38
Сообщение
#11
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Вернулся к СУБД Paradox. Решение на данную проблему найти не смог. Буду пробовать ускорять работу запросов в Paradox
|
|
|
|
AD Запрос вставки 28.3.2011, 11:12
BRE А если в программе sqlbrowser попробовать добавить... 28.3.2011, 12:11
AD Цитата(BRE @ 28.3.2011, 13:11) А если в п... 28.3.2011, 12:42
AD Неужели ни у кого не было подобной проблемы при ра... 30.3.2011, 11:01
AD В связи с тем, что скорость работы на Paradox мале... 11.4.2011, 9:22
MoPDoBoPoT Цитата(QtAssistant)bool QSqlQuery::isActive () con... 11.4.2011, 21:41
AD Цитата(MoPDoBoPoT @ 11.4.2011, 22:41) Поп... 12.4.2011, 9:32
AD В результате долгих копаний. Кое-что смог выяснить... 12.4.2011, 14:18
MoPDoBoPoT Цитата(AD @ 12.4.2011, 10:32) Пробовал. Н... 12.4.2011, 21:19
AD Цитата(MoPDoBoPoT @ 12.4.2011, 22:19) Воз... 13.4.2011, 9:32
AD Либо я чего-то не понял, либо еще что-то, но загру... 14.4.2011, 10:38
MoPDoBoPoT Цитата(AD @ 14.4.2011, 11:38) Либо я чего... 14.4.2011, 21:49
AD Цитата(MoPDoBoPoT @ 14.4.2011, 22:49) Есл... 18.4.2011, 9:07
MoPDoBoPoT Странно. Блокировку можно получить, когда в рамках... 19.4.2011, 21:29
AD Цитата(MoPDoBoPoT @ 19.4.2011, 22:29) Стр... 21.4.2011, 9:19
AD О. Все-таки каких-то результатов удалось добиться.... 21.4.2011, 17:01
AD Проблема решена. Дело вот в чем. Моя модель SqlFil... 22.4.2011, 13:59
MoPDoBoPoT Цитата(AD @ 22.4.2011, 14:59) она блокиру... 22.4.2011, 21:09
AD Цитата(MoPDoBoPoT @ 22.4.2011, 22:09) В с... 22.4.2011, 23:08![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.11.2025, 17:26 |