Russian Qt Forum

Qt => Базы данных => Тема начата: ultimatet41 от Ноябрь 11, 2011, 19:52



Название: как узнать значение id таблицы БД из tableveiw
Отправлено: ultimatet41 от Ноябрь 11, 2011, 19:52
Здравствуйте. У меня возник следующий вопрос как мне узнать id строки таблицы бд из tabelview, сейчас поясню, имеется следующий код

 
Код:
tbModel->setTable("providers");
    tbModel->select();

    ui->providersTv->setModel(tbModel);
мне нужно в дальнейшем получить id строки таблицы providers из tabelveiw для формирования например такого вида запроса

Код:
UPDATE providers SET provider_name = '1111' WHERE provider_id= id выделенной строки 


Название: Re: как узнать значение id таблицы БД из tableveiw
Отправлено: ultimatet41 от Ноябрь 11, 2011, 21:15
Разобрался сам, кому интересно как смотрите код ниже

 
Код:
   QVariant myData; 
    QModelIndex myIndex;
    myIndex =ui->providersTv->model()->index( ui->providersTv->currentIndex().row(), 0, QModelIndex());
    myData = ui->providersTv->model()->data( myIndex, Qt::DisplayRole);
    QString id=myData.toString();
    QString str="UPDATE providers SET provider_name = 'test' WHERE provider_id="+id+";";
    QSqlQuery sql;
    sql.exec(str);


Название: Re: как узнать значение id таблицы БД из tableveiw
Отправлено: Странник от Ноябрь 11, 2011, 22:34
Код:
int id = ui->providersTv->model()->index(ui->providersTv->currentIndex().row(), 0).data().toInt();

QSqlQuery sqlQuery;
sqlQuery.prepare("UPDATE providers SET provider_name=? WHERE provider_id=?");
sqlQuery.addBindValue(QString("test"));
sqlQuery.addBindValue(id);
sqlQuery.exec();
можно для определения первичного ключа QSqlDatabase::primaryIndex(const QString &tableName) использовать, но по-моему не все драйверы поддерживают.