Вторая часть видео, посвященная классам для работы с БД. Подробно рассмотрены особенности взаимодействия класса QSqlTableModel с СУБД. Показаны слабые и сильные стороны различных стратегий кэширования.
Большое спасибо, Лев! В особенности за идею об отслеживании 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()
Все отлично Лев, но только вы упустили один очень важный момент. Когда добавляеш строку, модели как то пофиг на то, какая стратегия используется. Она тупо не запишет новую строку в БД. Запишет только если ввести значение в ячейку новой строки и нажать клавишу ентер.