带变量的 SQL 查询

SQL Query with variables

本文关键字:查询 SQL 变量      更新时间:2023-10-16

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

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

数据库>查询数据库只是将其发送到我的数据库连接。

我遇到的问题是:

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 类型不喜欢查询字符串中的 +。

塔恩克斯

没有将QDateTime隐式转换为QString。您需要显式转换它:

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

您可能需要提供一个格式说明符才能将其转换为MySQL喜欢的格式。

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