airdbc_drv.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _ADB_AIRDBC_DRV_H_
00018 #define _ADB_AIRDBC_DRV_H_
00019
00029 struct _AdbDriver;
00035 typedef struct _AdbDriver AdbDriver;
00036
00040 struct _AdbConnection {
00042 AdbDriver *driver;
00045 void *dconn;
00047 char *uri_full;
00049 char *uri_store;
00051 char *scheme;
00053 char *host;
00055 uint16_t port;
00057 char *username;
00059 char *password;
00061 char *dbname;
00064 char *additional;
00068 gboolean is_connected;
00069 };
00070
00074 struct _AdbStatement {
00076 AdbConnection *conn;
00079 void *dstmt;
00082 char *sql;
00085 uint32_t param_count;
00090 uint32_t param_maxlen;
00094 char *param_buf;
00097 char **param_str;
00099 GHashTable *param_map;
00100 };
00101
00105 struct _AdbResultSet {
00107 AdbStatement *stmt;
00110 void *drs;
00112 GHashTable *colname_map;
00113 };
00114
00116 typedef gboolean (*AdbConnectionFn)(
00117 AdbConnection *conn,
00118 GError **err);
00119
00121 typedef void (*AdbConnectionFreeFn)(
00122 AdbConnection *conn);
00123
00125 typedef gboolean (*AdbStatementFn)(
00126 AdbStatement *stmt,
00127 GError **err);
00128
00130 typedef void (*AdbStatementFreeFn)(
00131 AdbStatement *stmt);
00132
00134 typedef gboolean (*AdbExecuteFn)(
00135 AdbStatement *stmt,
00136 GError **err);
00137
00139 typedef gboolean (*AdbQueryFn)(
00140 AdbResultSet *rs,
00141 GError **err);
00142
00144 typedef void (*AdbResultSetFreeFn)(
00145 AdbResultSet *rs);
00146
00148 typedef gboolean (*AdbResultSetFn)(
00149 AdbResultSet *rs,
00150 GError **err);
00151
00153 typedef uint32_t (*AdbResultSetCountFn)(
00154 AdbResultSet *rs,
00155 GError **err);
00156
00158 typedef char *(*AdbResultSetNameFn)(
00159 AdbResultSet *rs,
00160 uint32_t col,
00161 GError **err);
00162
00164 typedef gboolean (*AdbFetchFn)(
00165 AdbResultSet *rs,
00166 uint32_t col,
00167 const char **val,
00168 GError **err);
00169
00174 struct _AdbDriver {
00177 const char *name;
00181 const char *param_prefix;
00183 gboolean param_numsuffix;
00186 AdbConnectionFn alloc;
00189 AdbConnectionFn open;
00192 AdbConnectionFn close;
00195 AdbConnectionFreeFn free;
00197 AdbConnectionFn begin;
00199 AdbConnectionFn commit;
00201 AdbConnectionFn rollback;
00205 AdbStatementFn prepare;
00208 AdbStatementFreeFn free_stmt;
00210 AdbExecuteFn exec;
00214 AdbQueryFn query;
00217 AdbResultSetFreeFn free_rs;
00219 AdbResultSetFn next;
00221 AdbResultSetCountFn colcount;
00223 AdbResultSetNameFn colname;
00228 AdbFetchFn fetch;
00229 };
00230
00243 void adb_driver_register(
00244 AdbDriver *driver);
00245
00246 #endif