Preparing query for QSqlQUeryModel



  • hy to all
    I'm trying to prepare a query and then to bind new values to it.
    this is what I managed to do
    @
    QSqlQuery query;
    query.prepare("INSERT INTO cliente(calo, titoloargento, nomecliente) "
    "VALUES (?, ?, ?)");
    query.addBindValue(ui->doubleSpinBox_calo->value());
    query.addBindValue(ui->spinBox->value());
    query.addBindValue(ui->lineEdit_nomeCliente->text());
    query.exec()
    @
    and this works fine, now I want to retrieve info from the database, and I'm using QSqlQueryModel. It works fine until this point:
    @
    this->model=new QSqlQueryModel();
    model->setQuery("SELECT nomecliente FROM cliente");
    ui->tableView->setVisible(true);
    ui->tableView->setModel(model);
    @
    but when I want to add a WHERE clause with values taken from a label I can't manage. I've tried this:
    @
    this->model=new QSqlQueryModel();
    QSqlQuery query;
    query.prepare("SELECT nomecliente FROM cliente WHERE nomeclient=?");
    query.addBindValue(ui->lineEdit_6->text());
    model->setQuery(query);
    ui->tableView->setVisible(true);
    ui->tableView->setModel(model);
    @
    but nothing happens...
    anybody has some suggestions??



  • Put after model->setQuery(query);

    @if (model.lastError().isValid())
    qDebug() << model.lastError();@
    and look what error it returns



  • To moderators: this topic not belong to Language Bindings, can you move it to General and Desktop?


  • Lifetime Qt Champion

    For such a simple query you could also use:
    @@ QSqlQuery query(QString("SELECT nomecliente FROM cliente WHERE nomeclient='%1'").arg(ui->lineEdit_6->text());

    Hope it helps



  • For more simplicity you also can write like this:
    @model->setQuery(QString(“SELECT nomecliente FROM cliente WHERE nomeclient=’%1’”).arg(ui->lineEdit_6->text());@
    But SGaist don't you think if query need some parameters then prepare() is prefered?



  • hy, thank you for replying , qxoz
    @
    if (model.lastError().isValid())
    qDebug() << model.lastError();
    @
    first gave me back a very stupid error that I did, I had the column name wrong, I fixed it but is still not working and your piece of code isn't returning any errors.
    for what it concernes the other piece of codeqt gives me this errore : error: stray '\200' in program it gives it to me times and the number changes quite often


  • Lifetime Qt Champion

    @qxoz IMHO It really depends on the use case.

    @sax94: I've had this from time to time when I copy pasted code, sometimes it copied some invisible char that went in the file. The only thing i found was to delete the lines surrounding the stray source and rewriting it. You might want to try a replace with a RegExp.



  • thank's it worked fine



  • What was wrong? Invisible char?



  • yes!!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.