Fix browsing of tables without rowid

Browsing WITHOUT ROWID tables was broken since a couple of commits. An
error message would be printed to the console and all cells would stay
empty. This is fixed by this commit.
This commit is contained in:
Martin Kleusberg
2017-06-22 00:05:53 +02:00
parent 61f385abba
commit 6c9c56a2a9
2 changed files with 6 additions and 2 deletions

View File

@@ -25,6 +25,7 @@ SqliteTableModel::SqliteTableModel(DBBrowserDB& db, QObject* parent, size_t chun
void SqliteTableModel::reset()
{
m_sTable.clear();
m_sRowidColumn.clear();
m_iSortColumn = 0;
m_sSortOrder = "ASC";
m_headers.clear();
@@ -58,7 +59,8 @@ void SqliteTableModel::setTable(const QString& table, int sortColumn, Qt::SortOr
sqlb::TablePtr t = m_db.getObjectByName(table).dynamicCast<sqlb::Table>();
if(t && t->fields().size()) // parsing was OK
{
m_headers.push_back(t->rowidColumn());
m_sRowidColumn = t->rowidColumn();
m_headers.push_back(m_sRowidColumn);
m_headers.append(t->fieldNames());
// parse columns types
@@ -84,6 +86,7 @@ void SqliteTableModel::setTable(const QString& table, int sortColumn, Qt::SortOr
if(!allOk)
{
QString sColumnQuery = QString::fromUtf8("SELECT * FROM %1;").arg(sqlb::escapeIdentifier(table));
m_sRowidColumn = "rowid";
m_headers.push_back("rowid");
m_headers.append(getColumns(sColumnQuery, m_vDataTypes));
}
@@ -778,7 +781,7 @@ void SqliteTableModel::setPseudoPk(const QString& pseudoPk)
{
m_pseudoPk.clear();
if(m_headers.size())
m_headers[0] = "rowid";
m_headers[0] = m_sRowidColumn;
} else {
m_pseudoPk = pseudoPk;
if(m_headers.size())

View File

@@ -86,6 +86,7 @@ private:
QString m_sQuery;
QString m_sTable;
QString m_sRowidColumn;
QString m_pseudoPk;
int m_iSortColumn;
QString m_sSortOrder;