1 /***************************************************************************
2 * Copyright (C) 2007 by Prabakaran Thirumalai *
3 * praba_tuty@yahoo.com *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
20 #ifndef SQLODBCCONNECTION_H
21 #define SQLODBCCONNECTION_H
23 #include<AbsSqlConnection.h>
24 #include<SqlFactory.h>
29 SQLRETURN (*SQLAllocHandlePtr
)(SQLSMALLINT
, SQLHANDLE
, SQLHANDLE
*);
30 SQLRETURN (*SQLSetEnvAttrPtr
)(SQLHENV
, SQLINTEGER
, SQLPOINTER
, SQLINTEGER
);
31 SQLRETURN (*SQLDriverConnectPtr
)(SQLHDBC
, SQLHWND
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
, SQLSMALLINT
*, SQLUSMALLINT
);
32 SQLRETURN (*SQLGetDiagRecPtr
)(SQLSMALLINT
, SQLHANDLE
, SQLSMALLINT
, SQLCHAR
*, SQLINTEGER
*, SQLCHAR
*, SQLSMALLINT
, SQLSMALLINT
*);
33 SQLRETURN (*SQLSetConnectAttrPtr
)(SQLHDBC
, SQLINTEGER
, SQLPOINTER
, SQLINTEGER
);
34 SQLRETURN (*SQLFreeHandlePtr
)(SQLSMALLINT
, SQLHANDLE
);
35 SQLRETURN (*SQLTransactPtr
)(SQLHENV
, SQLHDBC
, SQLUSMALLINT
);
37 SQLRETURN (*SQLExecDirectPtr
)(SQLHSTMT
, SQLCHAR
*, SQLINTEGER
);
38 SQLRETURN (*SQLPreparePtr
)(SQLHSTMT
, SQLCHAR
*, SQLINTEGER
);
39 SQLRETURN (*SQLNumResultColsPtr
)(SQLHSTMT
, SQLSMALLINT
*);
40 SQLRETURN (*SQLDescribeColPtr
)(SQLHSTMT
, SQLUSMALLINT
, SQLCHAR
*, SQLSMALLINT
, SQLSMALLINT
*, SQLSMALLINT
*, SQLULEN
*,SQLSMALLINT
*, SQLSMALLINT
*);
41 SQLRETURN (*SQLBindColPtr
)(SQLHSTMT
, SQLUSMALLINT
, SQLSMALLINT
, SQLPOINTER
, SQLLEN
, SQLLEN
*);
42 SQLRETURN (*SQLNumParamsPtr
)(SQLHSTMT
, SQLSMALLINT
*);
43 SQLRETURN (*SQLDescribeParamPtr
)(SQLHSTMT
, SQLUSMALLINT
, SQLSMALLINT
*, SQLULEN
*, SQLSMALLINT
*, SQLSMALLINT
*);
44 SQLRETURN (*SQLBindParameterPtr
)( SQLHSTMT
, SQLUSMALLINT
, SQLSMALLINT
, SQLSMALLINT
, SQLSMALLINT
, SQLULEN
, SQLSMALLINT
, SQLPOINTER
, SQLLEN
, SQLLEN
*);
45 SQLRETURN (*SQLExecutePtr
)(SQLHSTMT
);
46 SQLRETURN (*SQLRowCountPtr
)(SQLHSTMT
, SQLLEN
*);
47 SQLRETURN (*SQLFetchPtr
)(SQLHSTMT
);
48 SQLRETURN (*SQLCloseCursorPtr
)(SQLHSTMT
);
49 SQLRETURN (*SQLPrimaryKeysPtr
)( SQLHSTMT
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
);
50 SQLRETURN (*SQLGetDataPtr
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLPOINTER
, SQLLEN
,SQLLEN
*);
51 SQLRETURN (*SQLDisconnectPtr
)(SQLHDBC
);
52 SQLRETURN (*SQLTablesPtr
)(SQLHSTMT
,SQLCHAR
*, SQLSMALLINT
, SQLCHAR
* , SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*,SQLSMALLINT
);
53 SQLRETURN (*SQLProcedureColumnsPtr
)(SQLHSTMT
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
, SQLCHAR
*, SQLSMALLINT
,SQLCHAR
*, SQLSMALLINT
);
58 * @class SqlOdbcConnection
65 class SqlOdbcConnection
: public AbsSqlConnection
69 char errState
[STATE_LENGTH
];
70 char dsnAdapter
[IDENTIFIER_LENGTH
];
75 char dsn
[IDENTIFIER_LENGTH
];
76 IsolationLevel prevIsoLevel
;
78 { strcpy(errState
,"00000"); innerConn
= NULL
; tdbName
= mysql
; prevIsoLevel
= READ_COMMITTED
; dsnAdapter
[0]='\0'; isConnOpen
= false; }
79 ~SqlOdbcConnection(){}
81 void setDsn(char *dsn
){ strcpy(dsnAdapter
,dsn
);}
82 char *getDsn(){return dsnAdapter
;}
83 void setTrDbName(char *name
);
84 TDBInfo
getTrDbName(){return tdbName
;}
85 static bool symbolsLoaded
;
86 static struct SQLFuncPtrs ODBCFuncPtrs
;
88 void setErrorState( SQLHDBC dbc
);
89 DbRetVal
loadSymbols();
91 //Note::forced to implement this as it is pure virtual in base class
92 Connection
& getConnObject(){ return dummyConn
; }
93 bool isConnectionOpen() { if (isConnOpen
) return true; return false; }
95 DbRetVal
connect (char *user
, char * pass
);
97 DbRetVal
disconnect();
103 DbRetVal
beginTrans (IsolationLevel isoLevel
, TransSyncMode mode
);
105 friend class SqlFactory
;