Название: Рост журнала транзакций (tempdb) при выполнении запросов SELECT [РЕШЕНО] Отправлено: Andrew12 от Июль 28, 2011, 11:49 Здравствуй, многоуважаемый All
Использую QT+MSSQL+ODBC. Соединение: Код: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); Запрос на выборку: Код: QSqlQueryModel *qModel = new QSqlQueryModel(); Так вот если использую запрос на выборку n-раз происходит рост журнала транзакций (tempdb). Если заключить выборку в транзакцию: Код: QSqlDatabase::database ().transaction (); Помогите кто чем может! Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 11:56 Цитировать Так вот если использую запрос на выборку n-раз происходит рост журнала транзакций (tempdb). Не распарсил. Поставь знаки препинания.Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 12:04 Что имеется ввиду? Точку с запятой в конце запроса или Go?
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 12:07 Ты делаешь выборку n-раз или журнал растет n-раз?
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 12:18 После, скажем, 10 выполнений
Код: QSqlQueryModel *qModel = new QSqlQueryModel(); журнал прибавляет в весе 5 Мб Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 12:29 А кто удалять модели будет?
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 12:42 Вы знаете, помогло, методом qModel->~QSqlQueryModel. Спасибо.
Но вопрос! Как ее уничтожать, если эта модель потом tableview->setModel(qModel); Путем tableview.~QTableView? Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: m_ax от Июль 28, 2011, 12:52 Цитировать qModel->~QSqlQueryModel Сурово))tableview.~QTableView? Я где то уже видел надавно такой же шедевр) Код и всё. Есть же куча литературы по Qt.. Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 12:54 Модель нужно создавать один раз, а не на каждый запрос.
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 13:08 to m_ax: Я, вообщем, осознаю, что уничтожение можно производить путем уничтожения родителя.
Хорошо, припустим: 1. Есть клас, работающий с БД и, по вашему утверждению, имеющий один свой QSqlQueryModel. 2. Есть различные формы, отображающие данные в TableView по некому SQL-запросу. Как разместить результаты различных запросов в этих tableview, если QSqlQueryModel един? Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: m_ax от Июль 28, 2011, 13:09 Модель нужно создавать один раз, а не на каждый запрос. Согласен)Указатель на qModel лучше сделать членом класса и в конструкторе один раз её создать: Код
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 13:14 to m_ax: Я, вообщем, осознаю, что уничтожение можно производить путем уничтожения родителя. Да легко. Один раз создаешь модель и устанавливаешь ее на вьюху. Различные формы передают sql строку, которую и устанавливаешь через qModel->setQuery.Хорошо, припустим: 1. Есть клас, работающий с БД и, по вашему утверждению, имеющий один свой QSqlQueryModel. 2. Есть различные формы, отображающие данные в TableView по некому SQL-запросу. Как разместить результаты различных запросов в этих tableview, если QSqlQueryModel един? Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 13:21 Приведу пример:
Код: QSqlQueryModel * ADatabase::selectSql(QString querystring) { Функция не статична, работает с членом класа qModel и возвращает его в качестве результата. 1. Запрос передал, 2. модель получил 3. установил эту модель tableview->setModel(). Теперь из другой формы обращаюсь к этому же класу ADatabase с другим запросом. Результат - модель меняется - меняются данные первой tableview. Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Пантер от Июль 28, 2011, 13:23 Ничего не понял, но чувствую, что у тебя что-то не так с архитектурой приложения.
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Andrew12 от Июль 28, 2011, 13:31 Ничего. Все равно спасибо. Будем разбираться ))
Название: Re: Рост журнала транзакций (tempdb) при выполнении запросов SELECT :o Отправлено: Disaron от Июль 30, 2011, 13:00 Ничего не понял, но чувствую, что у тебя что-то не так с архитектурой приложения. <mode telepaty=on>может он имеет ввиду что у нег на одной форме несколько вьюх. А для каждой, соответственно, своя модель нужна?</mode>А вообще дело в том что функцией возвращается указатель на модель, объявленную членом класса, а не копия. Но конструктор копий у моделей запривачен, тут надо по-другому думать. |