我正在编写一个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();
导致构建错误。关于如何执行所需的连接的任何建议???
答案 0 :(得分:4)
您可以使用QSqlTableModel
在QTableView
:
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);