QString TableSchema::autoValueFieldName() const { for (int i = 0; i < tableFields.count(); ++i) { QSqlField f = tableFields.field(i); if (f.isAutoValue()) return f.name(); } return QString(); }
int TableSchema::autoValueIndex() const { for (int i = 0; i < tableFields.count(); ++i) { QSqlField f = tableFields.field(i); if (f.isAutoValue()) return i; } return -1; }
void DataViewer::onDatabaseItemActivated(const DatabaseItem &item) { if ((DatabaseItem::Table != item.m_type) && (DatabaseItem::View != item.m_type)) { return; } d_ptr->database = item.m_database; // for table tableShema QSqlRecord record = item.m_database.record(item.m_value); d_ptr->m_shemaModel->removeRows(0, d_ptr->m_shemaModel->rowCount()); d_ptr->m_shemaModel->insertRows(0, record.count()); for (int i = 0; i < record.count(); ++i) { QSqlField field = record.field(i); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 0), field.name()); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 1), field.type() == QVariant::Invalid ? "???" : QString(QVariant::typeToName(field.type()))); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 2), (field.length() < 0) ? QVariant("???") : field.length()); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 3), (field.precision() < 0) ? QVariant("???") : field.precision()); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 4), field.requiredStatus() == QSqlField::Unknown ? "???" : QVariant(bool(field.requiredStatus()))); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 5), field.isAutoValue()); d_ptr->m_shemaModel->setData(d_ptr->m_shemaModel->index(i, 6), field.defaultValue()); } d_ptr->m_tableShema->setModel(d_ptr->m_shemaModel.data()); d_ptr->m_tableShema->setEditTriggers(QAbstractItemView::NoEditTriggers); d_ptr->m_tableShema->resizeColumnsToContents(); d_ptr->m_tab->setTabText(::Scheme, tr(::c_schemeTable).arg(item.m_value)); // for table tableData QSqlTableModel *modelData = new QSqlTableModel(0, item.m_database); modelData->setEditStrategy(QSqlTableModel::OnRowChange); modelData->setTable(item.m_value); modelData->select(); d_ptr->m_tableData->setModel(modelData); d_ptr->m_tableData->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::EditKeyPressed); d_ptr->m_tableData->resizeColumnsToContents(); d_ptr->m_tab->setTabText(::Data, tr(::c_dataTable).arg(item.m_value)); d_ptr->m_sqlDataModel.reset(modelData); }
QVariant SchemaModel::data(const QModelIndex &index, int role) const { if (!index.isValid ()) { return QVariant (); } if (role == Qt::DisplayRole) { if (index.row () >= record.count ()) { return QVariant (); } QSqlField field = record.field(index.row()); switch (index.column ()) { case 0: return field.name (); case 1: return QLatin1String (QVariant::typeToName(field.type())); case 2: return field.length (); case 3: { QStringList mods; if (pindex.indexOf (field.name ()) >= 0) { mods << tr("PRIMARY KEY"); } if (field.requiredStatus () == QSqlField::Required) { mods << tr("NOT NULL"); } else if (field.requiredStatus () == QSqlField::Optional) { mods << tr ("NULL"); } if (field.isAutoValue ()) { mods << tr ("AUTO_INCREMENT"); } return mods.join(", "); } case 4: return field.defaultValue (); } } else if (role == Qt::DecorationRole) { } return QVariant (); }
void Browser::showMetaData(const QString &t) { QSqlRecord rec = connectionWidget->currentDatabase().record(t); QStandardItemModel *model = new QStandardItemModel(table); model->insertRows(0, rec.count()); model->insertColumns(0, 7); model->setHeaderData(0, Qt::Horizontal, "Fieldname"); model->setHeaderData(1, Qt::Horizontal, "Type"); model->setHeaderData(2, Qt::Horizontal, "Length"); model->setHeaderData(3, Qt::Horizontal, "Precision"); model->setHeaderData(4, Qt::Horizontal, "Required"); model->setHeaderData(5, Qt::Horizontal, "AutoValue"); model->setHeaderData(6, Qt::Horizontal, "DefaultValue"); for (int i = 0; i < rec.count(); ++i) { QSqlField fld = rec.field(i); model->setData(model->index(i, 0), fld.name()); model->setData(model->index(i, 1), fld.typeID() == -1 ? QString(QVariant::typeToName(fld.type())) : QString("%1 (%2)").arg(QVariant::typeToName(fld.type())).arg(fld.typeID())); model->setData(model->index(i, 2), fld.length()); model->setData(model->index(i, 3), fld.precision()); model->setData(model->index(i, 4), fld.requiredStatus() == -1 ? QVariant("?") : QVariant(bool(fld.requiredStatus()))); model->setData(model->index(i, 5), fld.isAutoValue()); model->setData(model->index(i, 6), fld.defaultValue()); } table->setModel(model); table->setEditTriggers(QAbstractItemView::NoEditTriggers); updateActions(); }