void SqliteTableModel::setQuery(const QString& sQuery, bool dontClearHeaders) { // clear if(!dontClearHeaders) reset(); if(!m_db->isOpen()) return; m_sQuery = removeComments(sQuery).trimmed(); // do a count query to get the full row count in a fast manner m_rowCount = getQueryRowCount(); if(m_rowCount == -1) { m_valid = false; return; } // headers if(!dontClearHeaders) { m_headers.append(getColumns(sQuery)); } // now fetch the first entries clearCache(); fetchData(0, m_chunkSize); m_valid = true; emit layoutChanged(); }
void SqliteTableModel::setQuery(const QString& sQuery, bool dontClearHeaders) { // clear if(!dontClearHeaders) { m_mWhere.clear(); m_headers.clear(); } if(!m_db->isOpen()) return; m_sQuery = removeComments(sQuery).trimmed(); // do a count query to get the full row count in a fast manner m_rowCount = getQueryRowCount(); if(m_rowCount == -1) { m_valid = false; return; } // headers if(!dontClearHeaders) { sqlite3_stmt* stmt; QByteArray utf8Query = sQuery.toUtf8(); int status = sqlite3_prepare_v2(m_db->_db, utf8Query, utf8Query.size(), &stmt, NULL); if(SQLITE_OK == status) { status = sqlite3_step(stmt); int columns = sqlite3_data_count(stmt); for(int i = 0; i < columns; ++i) m_headers.append(QString::fromUtf8((const char*)sqlite3_column_name(stmt, i))); } sqlite3_finalize(stmt); } // now fetch the first entries clearCache(); fetchData(0, m_chunkSize); m_valid = true; emit layoutChanged(); }