| 314 | //------------------------------------------------------------------------------ |
| 315 | |
| 316 | bool vtkMySQLQueryInternals::SetQuery( |
| 317 | const char* queryString, MYSQL* db, std::string& error_message) |
| 318 | { |
| 319 | this->FreeStatement(); |
| 320 | this->FreeUserParameterList(); |
| 321 | this->FreeBoundParameters(); |
| 322 | |
| 323 | if (!this->ValidPreparedStatementSQL(queryString)) |
| 324 | { |
| 325 | return true; // we'll have to handle this query in immediate mode |
| 326 | } |
| 327 | |
| 328 | this->Statement = mysql_stmt_init(db); |
| 329 | if (this->Statement == nullptr) |
| 330 | { |
| 331 | error_message = "vtkMySQLQuery: mysql_stmt_init returned out of memory error"; |
| 332 | return false; |
| 333 | } |
| 334 | |
| 335 | int status = mysql_stmt_prepare(this->Statement, queryString, strlen(queryString)); |
| 336 | |
| 337 | if (status == 0) |
| 338 | { |
| 339 | this->UserParameterList.resize(mysql_stmt_param_count(this->Statement), nullptr); |
| 340 | return true; |
| 341 | } |
| 342 | else |
| 343 | { |
| 344 | error_message = mysql_stmt_error(this->Statement); |
| 345 | return false; |
| 346 | } |
| 347 | } |
| 348 | |
| 349 | //------------------------------------------------------------------------------ |
| 350 | |