2

我试图将值插入到 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 类型不喜欢查询字符串中的 +。

坦克斯

4

2 回答 2

2

没有 to 的隐式QDateTime转换QString。您需要显式转换它:

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

您可能必须提供格式说明符才能将其转换为 MySQL 喜欢的格式。

于 2012-12-06T22:33:18.443 回答
1

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

于 2012-12-07T08:28:04.100 回答