如何将列表中的值插入SQL表?

时间:2015-04-15 15:05:41

标签: sql qt

我有一个SQL数据库,我可以使用QSqlTableModel读/写它。现在我创建了一个列表并将值插入其中。单击按钮后,我希望列表中的值在数据库中更新。 你的帮助将非常有用。请帮我修改代码。

Conndb conn;
conn.open();

QSqlQuery sql;
sql.prepare("insert into [ECUP_DSS_DB].[dbo].[ContHistory] (HistID, NodeID)"
            "values (?, ?)");

QVariantList Hidval;
Hidval << 2 << 2 << 1 << 8;
sql.addBindValue(Hidval);

QVariantList Nodeval;
Nodeval << 2 << 2 << 1 << 8;
sql.addBindValue(Nodeval);

// QSqlTableModel * modal = new QSqlTableModel();

if (!sql.execBatch()) {
    qDebug() << sql.lastError();
} else {
    qDebug() << sql.executedQuery();
}
QSqlQueryModel * modal = new QSqlQueryModel();
sql.exec();
modal->setQuery(sql);
ui->tableView->setModel(modal);
conn.close();

1 个答案:

答案 0 :(得分:0)

在批处理中添加多个值的最简单示例如下所示:

QVariantList values;
values << 1 << 2 << 3;

QSqlQuery query;
query.prepare("INSERT INTO numbers (number) VALUES(?)");
query.addBindValue(values);

if (!query.execBatch()) {
    qDebug() << query.lastError();
} else {
    qDebug() << query.executedQuery();
}

设置表格视图

QSqlQueryModel* model = new QSqlQueryModel();
model->setQuery("SELECT id, number FROM numbers");
ui->tableView->setModel(model);

对于这个例子,我使用了下表:

CREATE TABLE IF NOT EXISTS numbers (id INTEGER PRIMARY KEY AUTOINCREMENT, number INTEGER);