| Revision 1 (by moose, 2006/03/06 10:00:33) |
Initial Import
|
#ifndef __MADDB_H__
#define __MADDB_H__
#include <MadException.h>
/*
class MadDBException : public MadException {
class InvalidHandle : public MadDBException { };
class Busy : public MadDBException { };
};
*/
enum {
MadDB_ERROR = -1,
MadDB_OK = 1,
MadDB_ROW,
MadDB_DONE,
MadDB_BUSY,
MadDB_INTEGER = 100,
MadDB_FLOAT,
MadDB_TEXT,
MadDB_BLOB,
MadDB_NULL,
};
class MadDBResult {
public:
MadDBResult() { }
virtual ~MadDBResult() { }
virtual int reset() = 0;
virtual int step() = 0;
virtual const void *columnBlob(int) = 0;
virtual int columnBytes(int) = 0;
virtual double columnDouble(int) = 0;
virtual int columnInt(int) = 0;
virtual const char *columnText(int) = 0;
virtual int columnType(int) = 0;
virtual int bindBlob(int, const void*, int n) = 0;
virtual int bindDouble(int, double) = 0;
virtual int bindInt(int, int) = 0;
virtual int bindNull(int) = 0;
virtual int bindText(int, const char*) = 0;
private:
friend class MadDBConnection;
};
class MadDBConnection {
public:
MadDBConnection() { }
virtual ~MadDBConnection() { }
// const char *getDatabase();
// void setDatabase(const char *);
// " username
// " password
// " host
// " port
// not sure I want to do get* and set* like this, seems ugly... try and find something more elegant.
virtual bool connect() = 0;
virtual bool connect(const char *db)
{
return database(db) && connect();
}
virtual bool connect(const char *db, const char *serv)
{
return database(db) && server(serv) && connect();
}
virtual bool connect(const char *db, const char *serv, const char *u)
{
return database(db) && server(serv) && user(u) && connect();
}
virtual bool connect(const char *db, const char *serv, const char *u, const char *pw)
{
return database(db) && server(serv) && user(u) && password(pw) && connect();
}
virtual bool server(const char *s) = 0;
virtual const char *server() = 0;
virtual bool user(const char *u) = 0;
virtual const char *user() = 0;
virtual bool password(const char *pw) = 0;
virtual const char *password() = 0;
virtual bool database(const char *db) = 0;
virtual const char *database() = 0;
virtual bool disconnect() = 0;
// transactions
virtual bool begin() = 0;
virtual bool commit() = 0;
virtual bool rollback() = 0;
virtual MadDBResult *prepare(const char *) = 0;
virtual MadDBResult *preparef(const char *, ...) = 0;
virtual bool query(const char *) = 0;
virtual bool queryf(const char *, ...) = 0;
int last_insert_id();
virtual const char *error_message() = 0;
private:
friend class MadDBResult;
};
class MadDBHandler {
public:
virtual MadDBConnection *getDB() = 0;
};
#endif /* __MADDB_H__ */