1/***********************************************************************/
2/* MYCONN.H Olivier Bertrand 2007-2013 */
3/* */
4/* This is the declaration file for the MySQL connection class and */
5/* a few utility functions used to communicate with MySQL. */
6/* */
7/* DO NOT define DLL_EXPORT in your application so these items are */
8/* declared are imported from the Myconn DLL. */
9/***********************************************************************/
10#if defined(__WIN__)
11#include <winsock.h>
12#else // !__WIN__
13#include <sys/socket.h>
14#endif // !__WIN__
15#include <mysql.h>
16#include <errmsg.h>
17#include "myutil.h"
18
19#if defined(__WIN__) && defined(MYCONN_EXPORTS)
20#if defined(DLL_EXPORT)
21#define DllItem _declspec(dllexport)
22#else // !DLL_EXPORT
23#define DllItem _declspec(dllimport)
24#endif // !DLL_EXPORT
25#else // !__WIN__ || !MYCONN_EXPORTS
26#define DllItem
27#endif // !__WIN__
28
29#define MYSQL_ENABLED 0x00000001
30#define MYSQL_LOGON 0x00000002
31
32typedef class MYSQLC *PMYC;
33
34/***********************************************************************/
35/* Prototypes of info functions. */
36/***********************************************************************/
37PQRYRES MyColumns(PGLOBAL g, THD *thd, const char *host, const char *db,
38 const char *user, const char *pwd,
39 const char *table, const char *colpat,
40 int port, bool info);
41
42PQRYRES SrcColumns(PGLOBAL g, const char *host, const char *db,
43 const char *user, const char *pwd,
44 const char *srcdef, int port);
45
46uint GetDefaultPort(void);
47
48/* -------------------------- MYCONN class --------------------------- */
49
50/***********************************************************************/
51/* MYSQLC exported/imported class. A MySQL connection. */
52/***********************************************************************/
53class DllItem MYSQLC {
54 friend class TDBMYSQL;
55 friend class MYSQLCOL;
56 friend class TDBMYEXC;
57 // Construction
58 public:
59 MYSQLC(void);
60
61 // Implementation
62 int GetRows(void) {return m_Rows;}
63 bool Connected(void);
64
65 // Methods
66 int GetResultSize(PGLOBAL g, PSZ sql);
67 int GetTableSize(PGLOBAL g, PSZ query);
68 int Open(PGLOBAL g, const char *host, const char *db,
69 const char *user= "root", const char *pwd= "*",
70 int pt= 0, const char *csname = NULL);
71 int KillQuery(ulong id);
72 int ExecSQL(PGLOBAL g, const char *query, int *w = NULL);
73 int ExecSQLcmd(PGLOBAL g, const char *query, int *w);
74#if defined(MYSQL_PREPARED_STATEMENTS)
75 int PrepareSQL(PGLOBAL g, const char *query);
76 int ExecStmt(PGLOBAL g);
77 int BindParams(PGLOBAL g, MYSQL_BIND *bind);
78#endif // MYSQL_PREPARED_STATEMENTS
79 PQRYRES GetResult(PGLOBAL g, bool pdb = FALSE);
80 int Fetch(PGLOBAL g, int pos);
81 char *GetCharField(int i);
82 int GetFieldLength(int i);
83 int Rewind(PGLOBAL g, PSZ sql);
84 void FreeResult(void);
85 void Close(void);
86
87 protected:
88 MYSQL_FIELD *GetNextField(void);
89 void DataSeek(my_ulonglong row);
90
91 // Members
92 MYSQL *m_DB; // The return from MySQL connection
93#if defined (MYSQL_PREPARED_STATEMENTS)
94 MYSQL_STMT *m_Stmt; // Prepared statement handle
95#endif // MYSQL_PREPARED_STATEMENTS
96 MYSQL_RES *m_Res; // Points to MySQL Result
97 MYSQL_ROW m_Row; // Point to current row
98 int m_Rows; // The number of rows of the result
99 int N;
100 int m_Fields; // The number of result fields
101 int m_Afrw; // The number of affected rows
102 bool m_Use; // Use or store result set
103 const char *csname; // Table charset name
104 }; // end of class MYSQLC
105
106