2015-04-15 86 views
0

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

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(); 
+0

关键字格式化为代码。 – pagid

回答

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); 
+0

我有一个HistID,NodeID,SV_EXT和TIME_STAMP作为标题的表。我希望将行添加到HistID和NodeID并将它们显示在QSqlTableModel中。看到上面的评论我已经对编码进行了修改,但是表格也没有在TableView中显示。我在问题中编辑了我的代码。 –

+0

我不知道你是否错过了类型,但是你正在为'execBatch'和'exec'方法使用插入语句相同的'sql'对象。那么你把它放在'setQuery'中? – smicyk

+0

虽然我注释掉sql.exec()语句,但我没有得到输出。我没有得到任何错误既没有所需的输出。 –

相关问题