/*BindVariables-parses querystring and binds variables*/ char *DBConnection_SQLITE::BindVariables(char *p_query, int p_query_length, DBString *p_arguments, int p_argument_count, int &r_new_query_length) { char *t_parsed_query; t_parsed_query = p_query; int t_parsed_query_length; t_parsed_query_length = p_query_length; bool t_success; t_success = true; if (p_argument_count != 0) { QueryMetadata t_query_metadata; t_query_metadata . argument_count = p_argument_count; t_query_metadata . arguments = p_arguments; DBBuffer t_query_buffer(t_parsed_query_length + 1); t_success = processQuery(p_query, t_query_buffer, queryCallback, &t_query_metadata); t_query_buffer . ensure(1); *t_query_buffer . getFrontier() = '\0'; t_query_buffer . advance(1); t_parsed_query_length = t_query_buffer . getSize(); t_parsed_query = t_query_buffer . grab(); } r_new_query_length = t_parsed_query_length; return t_parsed_query; }
PGresult *DBConnection_POSTGRESQL::ExecuteQuery(char *p_query, DBString *p_arguments, int p_argument_count) { if (!isConnected) return NULL; unsigned int t_query_length; t_query_length = strlen(p_query); char *t_parsed_query; t_parsed_query = p_query; int *t_placeholders; t_placeholders = NULL; int t_placeholder_count; t_placeholder_count = 0; bool t_success; t_success = true; if (p_argument_count != 0) { QueryMetadata t_query_metadata; t_query_metadata . argument_count = p_argument_count; t_query_metadata . arguments = p_arguments; t_query_metadata . connection = dbconn; DBBuffer t_query_buffer(t_query_length + 1); t_success = processQuery(p_query, t_query_buffer, queryCallback, &t_query_metadata); t_query_buffer . ensure(1); *t_query_buffer . getFrontier() = '\0'; t_query_buffer . advance(1); t_query_length = t_query_buffer . getSize(); t_parsed_query = t_query_buffer . grab(); } PGresult *t_query_result; t_query_result = PQexec(dbconn, t_parsed_query); if (p_argument_count != 0) { free(t_parsed_query); } return t_query_result; }
bool DBConnection_MYSQL::ExecuteQuery(char *p_query, DBString *p_arguments, int p_argument_count) { if (!isConnected) return false; unsigned int t_query_length; t_query_length = strlen(p_query); char *t_parsed_query; t_parsed_query = p_query; int *t_placeholders; t_placeholders = NULL; int t_placeholder_count; t_placeholder_count = 0; bool t_success; t_success = true; if (p_argument_count != 0) { QueryMetadata t_query_metadata; t_query_metadata . argument_count = p_argument_count; t_query_metadata . arguments = p_arguments; t_query_metadata . connection = getMySQL(); DBBuffer t_query_buffer(t_query_length + 1); t_success = processQuery(p_query, t_query_buffer, queryCallback, &t_query_metadata); t_query_length = t_query_buffer . getSize(); t_parsed_query = t_query_buffer . grab(); } int t_error_code; if (t_success) { if (t_error_code = mysql_real_query(getMySQL(), t_parsed_query, t_query_length)) t_success = false; } if (p_argument_count != 0) free(t_parsed_query); return t_success; }
Cda_Def *DBConnection_ORACLE::ExecuteQuery(char *p_query, DBString *p_arguments, int p_argument_count) { int t_affected_rows; t_affected_rows = 0; unsigned int t_query_length; t_query_length = strlen(p_query); Cda_Def *t_cursor; t_cursor = new Cda_Def; bool t_success; t_success = true; sword t_error; if (t_success) { t_error = oopen(t_cursor, getLDA(), (text *)0, -1, -1, NULL, -1); if (t_error != 0) t_success = false; } char *t_parsed_query; t_parsed_query = p_query; PlaceholderMap t_placeholder_map; if (p_argument_count != 0) { t_placeholder_map . length = 0; t_placeholder_map . elements = new int[p_argument_count + 1]; DBBuffer t_query_buffer(t_query_length + 1); t_success = processQuery(p_query, t_query_buffer, queryCallback, &t_placeholder_map); t_query_length = t_query_buffer . getSize(); t_parsed_query = t_query_buffer . grab(); } if (t_success) { if (oparse(t_cursor, (text *)t_parsed_query, t_query_length, DEFER_PARSE, PARSE_V7_LNG) != 0) t_success = false; } if (t_success) { if (!BindVariables(t_cursor, p_arguments, p_argument_count, &t_placeholder_map)) t_success = false; } if (t_success) { t_error = oexec(t_cursor); if (t_error != 0) t_success = false; } if (!t_success) { delete t_cursor; t_cursor = NULL; } return t_cursor; }