⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbbaseclass.~h

📁 用ODBC写的数据库接口,支持SQlserver,mysql
💻 ~H
字号:
//---------------------------------------------------------------------------

#ifndef dbbaseclassH
#define dbbaseclassH
//#include "ADODB.hpp"
//#include <odbcinst.h>
#include "MyODBC.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#define AS_STRING 0
#define AS_BLOB   1
#define AS_INT    2

#define DB_FILE_TYPE_DEF    0
#define DB_FILE_TYPE_WST    1

#define DB_USER_ROLE_ALL    1

#define STR_MYSQL  "MySQL"
#define STR_ACCESS "MyAccess"
#define STR_SQLSERVER "SQLServer"

#pragma pack(1)
typedef struct DB_USER_INFO
{
    int nSize;
	char szHost[128];    //用户登陆主机
    char szUser[32];     // 用户名
    char szPassword[32]; //用户口令
    char szDBName[128];      // 用户允许连接的数据库。空表示没有限制数据库的连接
    unsigned int role;
}DB_USER_INFO;

typedef struct WDB_INFO
{
    bool bSupportTrans;
    bool bSupportLockOne;
    bool bSupportView;
    bool bEscape;
}WDB_INFO;

/////////////////////内部使用结构
typedef struct DB_BATCH_INFO
{
    char TableName[120];
    char Fields[62][120];
    char tmpFile[MAX_PATH];
    FILE *fp;
    char *pData;
    unsigned int nDataLen;
    int  filetype;
}DB_BATCH_INFO;

#pragma pack()

typedef int (__stdcall *TDB_CALLBACK)(int pos,char *info);

//void  UpperStr(char *in,char *out);
void HexToChar(char *hex,char *ch8,int length);
void  UpperStr2(char *in,char *out);
int ReplaceValues(char *pInOutStr,char *bl,char *szCalue);
int EscapeData(char *buff,char *outbuff,int len);

typedef struct PARAM_SQL
{
    char Param[56];
    char *pData;
    unsigned long nValue;
    long nStatus;
    PARAM_SQL *pNext;
}PARAM_SQL;


class CDBFaceBase
{
protected:
//    TADOConnection *m_adMain;
//    TADOQuery * m_adQuery;

    CMyODBC  *m_pDataConnect;
    CODBCSet *m_pDataSet;

    unsigned int iRecordCount;
    unsigned char *m_Data;
    char m_ServerName[120],m_LoginUser[120],m_LoginPS[120],m_DBName[120];
    //DB_BATCH_INFO m_DbBatchInfo;
    WDB_INFO      m_WDBINFO;
//    char *m_pSql;
//    int iSqlBuffLen;

private:
    PARAM_SQL *m_ParamSql;
    //char *m_Sql;
    void ClearParamSql();
public:
    char m_Err[560];
    char m_ClassName[120];
    char m_Driver[120];

    CDBFaceBase();
    ~CDBFaceBase();
    virtual WDB_INFO   *GetWDBInfo(){return &m_WDBINFO;}
    virtual bool  CreateDSN (char * szAttributes);
    virtual bool  CreateDB (char * szDBName);
    virtual bool  ConnectDB (char *szhostserver,char *szUser,char *szPassWord,char *szDBName);
    virtual bool  ConnectDBByStr (char *szConnectStr);
    virtual bool  UseDB (char *szDBName);
    virtual bool  GetCurrDB(char *szName){return false;};
    virtual bool  CloseDB ();
    virtual bool  GetAllDB (char * szDBName,int iSize);
//    virtual bool  GetAllDSN (char * szDBDSN,int iSize);
    virtual bool  GetAllUser (DB_USER_INFO * szUser,int iInNum,int *iOutNum);
    virtual bool  SetUserRole (DB_USER_INFO *useinfo);
    virtual bool  DeleteUser (DB_USER_INFO *szUser);
//    virtual bool  DeleteUser (char *username);
    virtual bool  ExecSQLCmd(char * szSQL);
    virtual bool  ExecSQL(char * szSQL,void *callback);
    virtual bool  ExecSQLFile(char * szSQLFile,void *callback);

    virtual void   AddSQL(char *sql);
    virtual bool   SetParam(char *parm,char *value,int size=0,int type=0);
    virtual bool   RunSql();

    virtual bool  Query(char * szSQL);
    virtual int   RecordCount();
    virtual bool  First();
    virtual bool  Next();
    virtual char *GetDataValue(char *szFieldName,int *len=0);
    virtual int   GetIntValue(char *szFieldName);
    virtual char *GetValueByIdx(int fid,int *len=0);
    virtual int   GetIntByIdx(int fid);

    virtual bool  BeginTrans(int *outLevel);
    virtual bool  Commit();
    virtual bool  Rollback();
    virtual bool  LockTables(char *tables);
    virtual bool  UnlockTables(char *tables);

    virtual HANDLE  BatchBegin(char *szTable,char *Fields);
    virtual bool  BatchAdd(HANDLE hdBatchHandle,char *szValues,int type,int ValueLen,bool endline);
    virtual bool  BatchEnd(HANDLE hdBatchHandle,void *callback);

    virtual bool  BatchByFile(char *sFileName,int filetype,char *szTableName,void *callback);
    virtual bool  FetchToFile(char *sql,char *pathname,char *szTable,void *callback);

    virtual bool   OptimizeTable(char *tables){return false;};
    virtual bool  Backup(char *pathname,char *db,void *callback);
//    virtual bool   Backup(char *backstr,char *pathname,void *callback);
    virtual bool  Restore(char *pathname,char *dbname,void *callback);

    //virtual bool   GetFields(char *Fields,int *memsize,int *count);
    virtual int   FieldCount();
    virtual char *GetField(int idx);
    //bool  GetDSN(char *pDSN,char *pHost);
    virtual char *GetErr(){return m_Err;};
//    virtual int   GetValue(int fieldid,char *FieldName,int *fielsize);
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -