Annotation of parser3/src/sql/mysql/parser3mysql.C, revision 1.5
1.1 paf 1: /** @file
2: Parser: MySQL driver.
3:
4: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
5:
6: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
7:
1.5 ! paf 8: $Id: parser3mysql.C,v 1.4 2001/04/04 12:45:47 paf Exp $
1.1 paf 9: */
10:
1.4 paf 11: #include <stdlib.h>
12:
1.1 paf 13: #include "pa_sql_driver.h"
1.4 paf 14: #include "mysql.h"
15: #include "pa_common.h"
1.1 paf 16:
1.4 paf 17: char *lsplit(char *string, char delim) {
18: if(string) {
19: char *v=strchr(string, delim);
20: if(v) {
21: *v=0;
22: return v+1;
23: }
24: }
25: return 0;
26: }
27:
28: char *lsplit(char **string_ref, char delim) {
29: char *result=*string_ref;
30: char *next=lsplit(*string_ref, delim);
31: *string_ref=next;
32: return result;
33: }
1.2 paf 34:
35: /// MySQL server driver
1.1 paf 36: class MySQL_Driver : public SQL_Driver {
37: public:
38:
1.4 paf 39: MySQL_Driver() : SQL_Driver() {
1.3 paf 40: }
1.1 paf 41:
42: /// get api version
43: int api_version() { return SQL_API_VERSION; }
1.4 paf 44: /// connect
1.5 ! paf 45: const char *connect(
! 46: char *url, ///< @b user:pass@host[:port]/database
! 47: void **info ///< MYSQL *
! 48: ) {
1.4 paf 49: char *user=url;
50: char *host=lsplit(user, '@');
51: char *db=lsplit(host, '/');
52: char *pwd=lsplit(user, ':');
53: char *error_pos=0;
54: char *port_cstr=lsplit(host, ':');
55: int port=port_cstr?strtol(port_cstr, &error_pos, 0):0;
56:
57: MYSQL *mysql=mysql_init(NULL);
58: if(!mysql_real_connect(mysql,
59: host, user, pwd, db, port?port:MYSQL_PORT, NULL, 0))
60: return "mysql connect failed";
61:
62: *(MYSQL **)info=mysql;
1.3 paf 63: return 0;
1.2 paf 64: }
1.4 paf 65: const char *disconnect(void *info) {
66: mysql_close((MYSQL *)info);
67: return 0;
1.2 paf 68: }
1.4 paf 69: const char *commit(void *info) {
1.3 paf 70: return 0;//"mysql commit failed";
1.1 paf 71: }
1.4 paf 72: const char *rollback(void *info) {
73: return 0;//"mysql rollback failed";
1.1 paf 74: }
75: };
76:
77: extern "C" SQL_Driver *create() {
78: return new MySQL_Driver();
79: }
E-mail: