--- parser3/src/sql/mysql/Attic/parser3mysql.C 2001/04/04 12:45:47 1.4 +++ parser3/src/sql/mysql/Attic/parser3mysql.C 2001/04/05 08:09:26 1.6 @@ -5,7 +5,7 @@ Author: Alexander Petrosyan (http://design.ru/paf) - $Id: parser3mysql.C,v 1.4 2001/04/04 12:45:47 paf Exp $ + $Id: parser3mysql.C,v 1.6 2001/04/05 08:09:26 paf Exp $ */ #include @@ -32,7 +32,14 @@ char *lsplit(char **string_ref, char del return result; } -/// MySQL server driver +/** + MySQL server driver + + @todo + figure out about memory for errors: + - static=add multithread locks + - dynamic=who should free it up? +*/ class MySQL_Driver : public SQL_Driver { public: @@ -40,9 +47,12 @@ public: } /// get api version - int api_version() { return SQL_API_VERSION; } + int api_version() { return SQL_DRIVER_API_VERSION; } /// connect - const char *connect(char *url, void **info) { + void connect( + char *url, ///< @b user:pass@host[:port]/database + void **connection ///< output: MYSQL * + ) { char *user=url; char *host=lsplit(user, '@'); char *db=lsplit(host, '/'); @@ -54,22 +64,15 @@ public: MYSQL *mysql=mysql_init(NULL); if(!mysql_real_connect(mysql, host, user, pwd, db, port?port:MYSQL_PORT, NULL, 0)) - return "mysql connect failed"; + fservices->_throw(mysql_error(mysql)); - *(MYSQL **)info=mysql; - return 0; - } - const char *disconnect(void *info) { - mysql_close((MYSQL *)info); - return 0; - } - const char *commit(void *info) { - return 0;//"mysql commit failed"; + *(MYSQL **)connection=mysql; } - const char *rollback(void *info) { - return 0;//"mysql rollback failed"; + void disconnect(void *connection) { + mysql_close((MYSQL *)connection); } - ; + void commit(void *connection) {} + void rollback(void *connection) {} }; extern "C" SQL_Driver *create() {