diff --git a/src/EditTableDialog.cpp b/src/EditTableDialog.cpp index 97bc01bc..0bc963ed 100644 --- a/src/EditTableDialog.cpp +++ b/src/EditTableDialog.cpp @@ -194,17 +194,17 @@ void EditTableDialog::updateTypes() { QString type = typeBox->currentText(); QString column = sender()->property("column").toString(); - if(m_bNewTable || pdb->renameColumn(curTable, column, column, type)) + + int index; + for(index=0;indexname() == column) - { - m_table.fields().at(i)->setType(type); - break; - } - } + if(m_table.fields().at(index)->name() == column) + break; } + + m_table.fields().at(index)->setType(type); + if(!m_bNewTable) + pdb->renameColumn(curTable, column, m_table.fields().at(index)); checkInput(); } } @@ -215,14 +215,15 @@ void EditTableDialog::itemChanged(QTreeWidgetItem *item, int column) if(index < m_table.fields().count()) { sqlb::FieldPtr field = m_table.fields().at(index); + bool callRenameColumn = false; + switch(column) { case kName: - if(m_bNewTable || pdb->renameColumn(curTable, field->name(), item->text(column), field->type())) - { - qobject_cast(ui->treeWidget->itemWidget(item, kType))->setProperty("column", item->text(column)); - field->setName(item->text(column)); - } + field->setName(item->text(column)); + qobject_cast(ui->treeWidget->itemWidget(item, kType))->setProperty("column", item->text(column)); + if(!m_bNewTable) + callRenameColumn = true; break; case kType: // see updateTypes() SLOT @@ -256,6 +257,8 @@ void EditTableDialog::itemChanged(QTreeWidgetItem *item, int column) case kNotNull: { field->setNotNull(item->checkState(column) == Qt::Checked); + if(!m_bNewTable) + callRenameColumn = true; } break; case kAutoIncrement: @@ -278,11 +281,25 @@ void EditTableDialog::itemChanged(QTreeWidgetItem *item, int column) } } } + + if(!m_bNewTable) + callRenameColumn = true; } break; - case kDefault: field->setDefaultValue(item->text(column)); break; - case kCheck: field->setCheck(item->text(column)); break; + case kDefault: + field->setDefaultValue(item->text(column)); + if(!m_bNewTable) + callRenameColumn = true; + break; + case kCheck: + field->setCheck(item->text(column)); + if(!m_bNewTable) + callRenameColumn = true; + break; } + + if(callRenameColumn) + pdb->renameColumn(curTable, field->name(), field); } checkInput(); diff --git a/src/ImportCsvDialog.cpp b/src/ImportCsvDialog.cpp index 7ec6b4f6..bbf94f90 100644 --- a/src/ImportCsvDialog.cpp +++ b/src/ImportCsvDialog.cpp @@ -47,7 +47,7 @@ void ImportCsvDialog::accept() return; // Generate field names. These are either taken from the first CSV row or are generated in the format of "fieldXY" depending on the user input - QList fieldList; + QStringList fieldList; if(ui->checkboxHeader->isChecked()) { int cfieldnum = 0; @@ -65,13 +65,13 @@ void ImportCsvDialog::accept() if(thisfield.isEmpty()) thisfield = QString("field%1").arg(cfieldnum+1); - fieldList.push_back(DBBrowserField(thisfield, "")); + fieldList.push_back(thisfield); cfieldnum++; curList.pop_front(); } } else { for(int i=0;i& structure) +bool DBBrowserDB::createTable(const QString& name, const QStringList& structure) { // Build SQL statement QString sql = QString("CREATE TABLE `%1` (").arg(name); for(int i=0;i new_table_structure; + QStringList new_table_structure; for(int i=0;itoString()); else - new_table_structure.push_back( - DBBrowserField(table.fldmap.value(i).getname(), table.fldmap.value(i).gettype()) - ); + new_table_structure.push_back(QString("`%1` %2").arg(table.fldmap.value(i).getname()).arg(table.fldmap.value(i).gettype())); } if(!createTable("sqlitebrowser_rename_column_new_table", new_table_structure)) { diff --git a/src/sqlitedb.h b/src/sqlitedb.h index 3b5c9a85..46869b40 100644 --- a/src/sqlitedb.h +++ b/src/sqlitedb.h @@ -90,10 +90,10 @@ public: bool deleteRecord(const QString& table, int rowid); bool updateRecord(const QString& table, const QString& column, int row, const QByteArray& value); - bool createTable(const QString& name, const QList& structure); + bool createTable(const QString& name, const QStringList& structure); bool renameTable(const QString& from_table, const QString& to_table); bool addColumn(const QString& table, const sqlb::FieldPtr& field); - bool renameColumn(const QString& tablename, const QString& from, const QString& to, const QString& type); + bool renameColumn(const QString& tablename, const QString& name, sqlb::FieldPtr to); bool dropColumn(const QString& tablename, const QString& column); QStringList getTableFields(const QString & tablename) const;