2012-12-06 99 views
2

我試着將值插入一個MySQL數據庫:SQL查詢與變量

database->queryDatabase("INSERT INTO recordings (title, recording, kit, date) VALUES ('"+recordingTitle+"', '"+ recordingArray +"', '"+kitID+"', '"+recordingDateTime+"')"); 

數據庫 - > queryDatabase只是把它發送到我的數據庫連接。

我遇到的問題是:

error: no match for 'operator+' in 'operator+(const QString&, const char*)(((const char*)"\', \'")) + ((Studio*)this)->Studio::recordingDateTime 

每個變種的類型爲:

QString recordingTitle; 
std::vector<std::pair<int, QString> > recordingArray; 
int kitID; 
QDateTime recordingDateTime; 

我怎樣才能每一個添加到數據庫?矢量和QDateTime類型不喜歡在查詢字符串+。

Tahnks

回答

2

還有的QDateTimeQString的隱式轉換。您需要明確地將其轉換爲:

database->queryDatabase("INSERT INTO recordings (title, recording, kit, date)" 
    " VALUES ('" + recordingTitle + "', '" + recordingArray +"', '" + kitID + 
     "', '" + recordingDateTime.toString() + "')"); 

您可能必須提供格式說明符才能將其轉換爲MySQL喜歡的格式。

1

請也記得串聯的SQL查詢是不是一個好主意,除非你知道自己在做什麼,因爲它使SQL-Injection攻擊。您應該使用bindValue method。這也有你的查詢將變得更快,也最容易解決的原始問題的副作用。