File:  [parser3project] / parser3 / src / include / pa_sql_connection.h
Revision 1.8: download - view: text, annotated - select for diffs - revision graph
Thu May 17 12:51:05 2001 UTC (25 years, 1 month ago) by parser
Branches: MAIN
CVS tags: HEAD
found problem at last: 2connections own 1driver and set_services fight for driver::fservices. before fix

/** @file
	Parser: sql connection decl.

	Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)

	Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)

	$Id: pa_sql_connection.h,v 1.8 2001/05/17 12:51:05 parser Exp $
*/

#ifndef PA_SQL_CONNECTION_H
#define PA_SQL_CONNECTION_H

#include "pa_config_includes.h"
#include "pa_pool.h"
#include "pa_sql_driver.h"
#include "pa_sql_driver_manager.h"

/// SQL connection. handy wrapper around low level SQL_Driver
class SQL_Connection : public Pooled {

public:

	void set_services(SQL_Driver_services *services) {
		fdriver.set_services(services);
	}

	SQL_Connection(Pool& pool,
		const String& aurl, 
		SQL_Driver& adriver,
		char *used_only_in_constructor_url_cstr) : Pooled(pool),
		furl(aurl),
		fdriver(adriver) {
		fdriver.connect(used_only_in_constructor_url_cstr, &connection);
	}

	void close(Pool& pool) {
		SQL_driver_manager->close_connection(furl, *this, pool);
	}

	void disconnect() { fdriver.disconnect(connection); }
	void commit() { fdriver.commit(connection); }
	void rollback() { fdriver.rollback(connection); }
	bool ping() { return fdriver.ping(connection); }
	uint quote(char *to, const char *from, unsigned int length) {
		return fdriver.quote(connection, to, from, length);
	}

	void query(
		const char *statement, unsigned long offset, unsigned long limit,
		unsigned int *column_count, SQL_Driver::Cell **columns,
		unsigned long *row_count, SQL_Driver::Cell ***rows) { 
		fdriver.query(connection, 
			statement, offset, limit, 
			column_count, columns,
			row_count, rows);
	}


private:

	SQL_Driver& fdriver;
	void *connection;
	const String& furl;
};

#endif

E-mail: