带有变量的SQL查询

时间:2012-12-06 22:13:55

标签: c++ mysql qt

我试图将值插入到mysql数据库中:

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

database-> queryDatabase只是将它发送到我的数据库连接。

我遇到的问题是:

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

每个var的类型为:

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

如何将每个数据添加到数据库? vector和QDateTime类型不喜欢查询字符串中的+。

Tahnks

2 个答案:

答案 0 :(得分:2)

没有QDateTimeQString的隐式转换。您需要明确转换它:

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

您可能需要提供格式说明符才能使其成为MySQL喜欢的格式。

答案 1 :(得分:1)

还请记住,连接SQL查询并不是一个好主意,除非您确切知道自己在做什么,因为它会启用SQL-Injection攻击。您应该使用bindValue method。这也有副作用,您查询将变得更快,也很可能解决原始问题。