'#34;一组字符串"和来自QLineEdit#34的输入;进入QString

时间:2014-12-11 08:08:47

标签: c++ qt qt4 concatenation qstring

我正在编写一个GUI应用程序,它将从oracle数据库执行 select * from table_name ,并在TableView模型中填充结果。要将我的查询作为查询数据库的输入,我使用了---

QString MyQuery = ui->lineEdit->text();
QSqlQuery query(MyQuery,db); 

它完美无缺。

现在我想通过让用户只键入 table_name 作为lineEdit中的输入来优化它。该程序将自行执行 select * from table_name

所以我认为我需要存储" SELECT * FROM"在QString变量中并将lineEdit的输入连接到它。

我不太确定这种连接的语法,所以我的两次尝试---

    QString myquery;
    strcat(myquery,"SELECT * FROM ");
    strcat(myquery,ui->lineEdit );

    QString myquery = "SELECT * FROM " + ui-lineEdit->text();

导致构建错误。关于如何执行所需的连接的任何建议???

2 个答案:

答案 0 :(得分:4)

您可以使用QSqlTableModelQTableView

中显示表格内容
QSqlTableModel * model = new QSqlTableModel(this,db);
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->setTable( "someTable" );
model->select();

ui->tableView->setModel( model );

但是如果您想使用QSqlQuery,您可以进行如下查询:

String myquery = QString("SELECT * FROM %1").arg(ui->lineEdit->text());

甚至更好:

query.prepare("SELECT * FROM :tableName");
query.bindValue(":tableName", ui->lineEdit->text());

答案 1 :(得分:3)

您可以使用QString::arg向字符串添加参数。

例如:

QString input = ui->lineEdit->text();
QString myQUery = QString("SELECT * FROM %1").arg(input);