2015-04-15 119 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()語句,但我沒有得到輸出。我沒有得到任何錯誤既沒有所需的輸出。 –

相關問題