Вторая часть видео, посвященная классам для работы с БД. Подробно рассмотрены особенности взаимодействия класса QSqlTableModel с СУБД. Показаны слабые и сильные стороны различных стратегий кэширования.
Пікірлер: 5
@user-qg4ef8yw2m8 жыл бұрын
огромное спасибо автору за очень информативные уроки!
@user-hu7rq3wr6s6 жыл бұрын
Большое спасибо, Лев! В особенности за идею об отслеживании SQL-запросов к БД. Есть еще возможность выводить все это в qDedug, в случае с SQLITE других вариантов наверное и нет. Создать слот-обработчик, и коннектить к нему сигналы модели. Такие как beforeUpdate(int, QSqlRecord &)), beforeInsert(QSqlRecord&) и другие. В конструкторе главной формы нечто навроде: connect(m_model, SIGNAL(beforeUpdate(int, QSqlRecord &)), this, SLOT(tracesqlite(int, QSqlRecord &))); Пока не разобрался, какой именно сигнал именно в какой ситуации лучше. Пригодятся наверное многие из имеющихся у модели. По срабатыванию сигнала выводить данные в qDebug. Выглядящий вот так слот: void MainWindow::tracesqlite(int n, QSqlRecord &rec) { int records=0; records = rec.count(); QString b=""; while (records>0) { b=b+"|"+rec.value(records).toString(); records=records-1; } qDebug()
@superivan1328 жыл бұрын
Все отлично Лев, но только вы упустили один очень важный момент. Когда добавляеш строку, модели как то пофиг на то, какая стратегия используется. Она тупо не запишет новую строку в БД. Запишет только если ввести значение в ячейку новой строки и нажать клавишу ентер.
@user-tz8vs7lc4j7 жыл бұрын
10:03 почему WireShark не ловит UPDAT'ы при изменении таблицы?
@stasandr4 жыл бұрын
Подскажите пожалуйста, как отслеживать запросы с бд Oracle, пытался найти подобную утилиту, не нашел