示例#1
0
/*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;
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}