私は動作するJavaコードを持っています
//**Correct Java query**
QueryString = "INSERT IGNORE INTO stock_prices (symbol,timestamp,open,high,low,close,vol) VALUES ('"
+ data[0] + "', '" + data[1] + "', " + data[2] + ", " + data[3] + ", " + data[4] + ", "
+ data[5] + ", " + data[6] + ")";
ただし、Javaでは文字列を使用してdoubleまたはintを簡単に追加できますが、C ++ではできません。C ++でクエリに対して複数のことを試しましたが、思ったように機能しません。私は何を間違っていますか?C++ でこれを行うためのより良い方法はありますか。これが私のクエリです。
//***Incorrect C++ query**
sql::Statement *stmt;
stmt = con->createStatement();
for (int i = 0; i < (int)timestamp.size(); i++) {
string s = symbols[ii];
string t = timestamp[i];
double v = vwap[i];
string query = "INSERT INTO stock_prices(symbol,time_stamp,vwap) VALUES('" + s + "', '" + t + "', " + boost::lexical_cast<std::string>(v) + ")";
stmt->executeQuery(query);
}
上記のコードは for ループの 1 回の繰り返しで実行され、次のエラーがスローされます。
terminate called after throwing an instance of 'sql::SQLException'
what():
Aborted
C++クエリを印刷しました(mysqlにコピーペーストすると機能します)
INSERT INTO stock_prices(symbol,time_stamp,vwap) VALUES('A', '2010-01-04 08:01:00', 0)