00001
00002
00003
00004
00005 #ifndef _DF_SQL_
00006 #define SQL_MAX_MESSAGE_LENGTH 512
00007 #define SQL_STILL_EXECUTING 2
00008 #endif
00009
00010
00011 class SQL : public SystemCode {
00012 friend class MySQL;
00013 friend class ODBC;
00014 _PROTECTED_:
00015 BOOL gotdata;
00016 String ErrorMsg;
00017
00018 String LastQuery;
00019
00020 public:
00021 SQL();
00022 ~SQL();
00023 void FreeData();
00024
00025
00026 char ***Data;
00027 int x, y;
00028
00029 virtual BOOL Connect(char *server, char *user, char *pwd) = 0;
00030 virtual BOOL Disconnect() = 0;
00031 virtual BOOL Query(char *sql, BOOL ignoreerror = FALSE) = 0;
00032 virtual BOOL QueryTables() = 0;
00033 virtual BOOL QueryColumns(char *table) = 0;
00034 virtual BOOL GetData() = 0;
00035
00036 virtual BOOL CreateTable(char *name, char *layout) = 0;
00037 virtual BOOL DeleteTable(char *name) = 0;
00038 virtual BOOL Select(char *table, char *spec, char *condition = NULL) = 0;
00039 virtual BOOL Insert(char *table, char *data) = 0;
00040 virtual BOOL Update(char *table, char *expr) = 0;
00041 virtual BOOL Delete(char *table, char *expr) = 0;
00042 };
00043
00044 class ODBC : public SQL {
00045 _PROTECTED_:
00046 int32 Henv;
00047 int32 Hdbc;
00048 int32 Hstmt;
00049 BOOL connected;
00050 BOOL ClearCursor();
00051 void SetupError(char *msg);
00052 public:
00053 ODBC();
00054 ~ODBC();
00055 BOOL Connect(char *server, char *user, char *pwd);
00056 BOOL Disconnect();
00057 BOOL Query(char *sql, BOOL ignoreerror = FALSE);
00058 BOOL QueryTables();
00059 BOOL QueryColumns(char *table);
00060 BOOL GetData();
00061
00062 BOOL CreateTable(char *name, char *layout);
00063 BOOL DeleteTable(char *name);
00064 BOOL Select(char *table, char *spec, char *condition = NULL);
00065 BOOL Insert(char *table, char *data);
00066 BOOL Update(char *table, char *expr);
00067 BOOL Delete(char *table, char *expr);
00068 };
00069
00070 class MySQL : public SQL {
00071 _PROTECTED_:
00072 Network nw;
00073 uint8 *packet;
00074 uint32 packetlen;
00075 uint8 packetnum;
00076 BOOL ReadPacket();
00077 void FreePacket();
00078 BOOL SendPacket(PTR buf, uint32 len);
00079 BOOL AddData();
00080 void SetupError(char *msg);
00081 uint32 caps;
00082 public:
00083 MySQL();
00084 ~MySQL();
00085 BOOL Connect(char *server, char *user, char *pwd);
00086 BOOL Disconnect();
00087 BOOL Query(char *sql, BOOL ignoreerror = FALSE);
00088 BOOL QueryTables();
00089 BOOL QueryColumns(char *table);
00090 BOOL GetData();
00091
00092 BOOL CreateDatabase(char *);
00093 BOOL SelectDatabase(char *);
00094 BOOL QueryDatabases();
00095 BOOL Lock(char *table, BOOL write = FALSE);
00096 BOOL Unlock();
00097
00098 BOOL CreateTable(char *name, char *layout);
00099 BOOL DeleteTable(char *name);
00100 BOOL Select(char *table, char *spec, char *condition = NULL);
00101 BOOL Insert(char *table, char *data);
00102 BOOL Update(char *table, char *expr);
00103 BOOL Delete(char *table, char *expr);
00104 };
00105
00106