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

各変数のタイプは次のとおりです。

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

それぞれをデータベースに追加するにはどうすればよいですか?vector型とQDateTime型は、クエリ文字列の+を好みません。

Tahnks

4

2 に答える 2

2

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 に答える