1 /*
2  *  hdbc.h
3  *
4  *  $Id: hdbc.h 1446 1999-01-22 10:52:42Z RR $
5  *
6  *  Data source connect object management functions
7  *
8  *  The iODBC driver manager.
9  *
10  *  Copyright (C) 1995 by Ke Jin <kejin@empress.com>
11  *
12  *  This library is free software; you can redistribute it and/or
13  *  modify it under the terms of the GNU Library General Public
14  *  License as published by the Free Software Foundation; either
15  *  version 2 of the License, or (at your option) any later version.
16  *
17  *  This library is distributed in the hope that it will be useful,
18  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20  *  Library General Public License for more details.
21  *
22  *  You should have received a copy of the GNU Library General Public
23  *  License along with this library; if not, write to the Free
24  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25  */
26 #ifndef	_HDBC_H
27 #define	_HDBC_H
28 
29 typedef struct DBC
30   {
31     int type;			/* must be 1st field */
32     struct DBC FAR *
33      next;
34 
35     HENV genv;			/* back point to global env object */
36 
37     HDBC dhdbc;			/* driver's private dbc */
38     HENV henv;			/* back point to instant env object */
39     HSTMT hstmt;		/* list of statement object handle(s) */
40     HERR herr;
41 
42     int state;
43 
44     /* options */
45     UDWORD access_mode;
46     UDWORD autocommit;
47 
48     UDWORD login_timeout;
49     UDWORD odbc_cursors;
50     UDWORD packet_size;
51     UDWORD quiet_mode;
52     UDWORD txn_isolation;
53     SWORD cb_commit;
54     SWORD cb_rollback;
55 
56     char FAR *
57      current_qualifier;
58 
59     int trace;			/* trace flag */
60     char FAR *
61      tfile;
62     void FAR *
63      tstm;			/* trace stream */
64   }
65 DBC_t;
66 
67 /*
68  * Note:
69  *  - ODBC applications can see address of driver manager's
70  *    connection object, i.e connection handle -- a void pointer,
71  *    but not detail of it. ODBC applications can neither see
72  *    detail driver's connection object nor its address.
73  *
74  *  - ODBC driver manager knows its own connection objects and
75  *    exposes their address to an ODBC application. Driver manager
76  *    also knows address of driver's connection objects and keeps
77  *    it via dhdbc field in driver manager's connection object.
78  *
79  *  - ODBC driver exposes address of its own connection object to
80  *    driver manager without detail.
81  *
82  *  - Applications can get driver's connection object handle by
83  *    SQLGetInfo() with fInfoType equals to SQL_DRIVER_HDBC.
84  */
85 
86 enum
87   {
88     en_dbc_allocated,
89     en_dbc_needdata,
90     en_dbc_connected,
91     en_dbc_hstmt
92   };
93 #endif
94