00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _ASTERISK_RES_ODBC_H
00026 #define _ASTERISK_RES_ODBC_H
00027
00028 #include <sql.h>
00029 #include <sqlext.h>
00030 #include <sqltypes.h>
00031
00032 typedef struct odbc_obj odbc_obj;
00033
00034 typedef enum { ODBC_SUCCESS=0,ODBC_FAIL=-1} odbc_status;
00035
00036 struct odbc_obj {
00037 char *name;
00038 char *dsn;
00039 char *username;
00040 char *password;
00041 SQLHENV env;
00042 SQLHDBC con;
00043 SQLHSTMT stmt;
00044 ast_mutex_t lock;
00045 int up;
00046
00047 };
00048
00049
00050 odbc_obj *new_odbc_obj(char *name,char *dsn,char *username, char *password);
00051 odbc_status odbc_obj_connect(odbc_obj *obj);
00052 odbc_status odbc_obj_disconnect(odbc_obj *obj);
00053 void destroy_odbc_obj(odbc_obj **obj);
00054 int register_odbc_obj(char *name,odbc_obj *obj);
00055 odbc_obj *fetch_odbc_obj(const char *name, int check);
00056 int odbc_dump_fd(int fd,odbc_obj *obj);
00057 int odbc_sanity_check(odbc_obj *obj);
00058 SQLHSTMT odbc_prepare_and_execute(odbc_obj *obj, SQLHSTMT (*prepare_cb)(odbc_obj *obj, void *data), void *data);
00059 int odbc_smart_execute(odbc_obj *obj, SQLHSTMT stmt);
00060 int odbc_smart_direct_execute(odbc_obj *obj, SQLHSTMT stmt, char *sql);
00061
00062 #endif