我试图将值插入到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
答案 0 :(得分:2)
没有QDateTime
到QString
的隐式转换。您需要明确转换它:
database->queryDatabase("INSERT INTO recordings (title, recording, kit, date)"
" VALUES ('" + recordingTitle + "', '" + recordingArray +"', '" + kitID +
"', '" + recordingDateTime.toString() + "')");
您可能需要提供格式说明符才能使其成为MySQL喜欢的格式。
答案 1 :(得分:1)
还请记住,连接SQL查询并不是一个好主意,除非您确切知道自己在做什么,因为它会启用SQL-Injection攻击。您应该使用bindValue method。这也有副作用,您查询将变得更快,也很可能解决原始问题。