include/df/db.hpp

00001 //Databases (SQL: ODBC, MySQL)
00002 
00003 //Some equates (only bare min needed)
00004 
00005 #ifndef _DF_SQL_
00006 #define SQL_MAX_MESSAGE_LENGTH     512
00007 #define SQL_STILL_EXECUTING        2
00008 #endif
00009 
00010 //an abstract class
00011 class SQL : public SystemCode {
00012     friend class MySQL;
00013     friend class ODBC;
00014   _PROTECTED_:
00015     BOOL gotdata;
00016     String ErrorMsg;
00017     //#ifdef DEBUG
00018     String LastQuery;  //for debugging
00019     //#endif
00020   public:
00021     SQL();
00022     ~SQL();
00023     void FreeData();   //release SQL Query results (Data)
00024 
00025     //the following is the data retreived by GetData()
00026     char ***Data;      //two-dimension array of char strings!
00027     int x, y;          //row/column counts for data
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;             //send SQL Query
00032     virtual BOOL QueryTables() = 0;                //query all available tables
00033     virtual BOOL QueryColumns(char *table) = 0;    //query all columns in a table
00034     virtual BOOL GetData() = 0;   //gets SQL results
00035     //the following should be standard SQL functions
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);             //send SQL Query
00058     BOOL QueryTables();                //query all available tables
00059     BOOL QueryColumns(char *table);    //query all columns in a table
00060     BOOL GetData();   //gets SQL results
00061     //the following should be standard SQL functions
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;  //server 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);             //send SQL Query
00088     BOOL QueryTables();                //query all available tables
00089     BOOL QueryColumns(char *table);    //query all columns in a table
00090     BOOL GetData();   //gets SQL results
00091 
00092     BOOL CreateDatabase(char *);
00093     BOOL SelectDatabase(char *);
00094     BOOL QueryDatabases();
00095     BOOL Lock(char *table, BOOL write = FALSE);
00096     BOOL Unlock();
00097     //the following should be standard SQL functions
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 

Generated on Mon Mar 5 09:49:13 2007 for DigiForce by  doxygen 1.4.7