程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 嵌入式MYSQL服務器實現

嵌入式MYSQL服務器實現

編輯:MySQL綜合教程


嵌入式MYSQL服務器實現   // EmbeddedMySQL.h: interface for the CEmbeddedMySQL class. // //////////////////////////////////////////////////////////////////////   #if !defined(AFX_EMBEDDEDMYSQL_H__516724E2_889C_4899_9DAE_330CD4C5954F__INCLUDED_) #define AFX_EMBEDDEDMYSQL_H__516724E2_889C_4899_9DAE_330CD4C5954F__INCLUDED_   www.2cto.com   #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <mysql.h> #include <string> #include "StdString.h" using namespace std;   //嵌入式MYSQL服務器 class CEmbeddedMySQL   { public:  CEmbeddedMySQL();  virtual ~CEmbeddedMySQL();       static bool StartupEmbeddedServer();     static void ShutdownEmbeddedServer();       bool Open( const string &svr, const string &usr, const string &pwd, const string &db);     void Close();   www.2cto.com       bool ResetDB();     void Set( const string &sField, const string &sValue );     void Set( const string &sField, double dValue );     void Set( const string &sField, long nValue );     void Set( const string &sField, int nValue );     void Set( const string &sField, BYTE *pBuf, int nLen );     void SetNull( const string &sField );     void registerOutParameter( const string &sField, char cType ); //    void SetRecord( const string &sField, const string &sTableName, const string &sTypeName, CStdRecord &Record );         void Cmd(const char *cmd,...);     bool More();     long Exec(); //    bool SelectInto(CStdRecord *pRecord,bool bCreateHead=true);              double GetDouble(int id);     double GetDouble(const string &name);     long GetLong(int id);     long GetLong(const string &name);     string Get(int id);     string Get(const string &name);     string GetLastErrMsg();     char* GetSql();       bool MoreForUpdate();     bool SetBuffer( int nFieldIndex, BYTE *pBuf, long nSize );     bool SetBuffer( const string &sField, BYTE *pBuf, long nSize );     bool GetBuffer( const string &sField, BYTE *pBuf, long &nSize );     bool GetBuffer( int nFieldIndex, BYTE *pBuf, long &nSize );     long GetDataSize( const string &sField );     long GetDataSize( int nFieldIndex );     long GetActualSize( const string &sField );     long GetActualSize( int nFieldIndex );   www.2cto.com       void ClearSql();     long GetColIndex( const string &sField );     string GetColName( int nFiledIndex );     string GetColType( int index );     int GetNumCols();     string GetHeadScript();          int  row_getsize();     bool row_gethead( string &sHead );     bool row_more( char *pData, int &nSize );              void SetAutoCommit( bool autoCommit );     void RollBack();     void Commit();     bool IsDead();     bool SetParam( int nType, const string &sVal ); protected:  void WriteSQLErrLog();
   // 獲取過程返回值  string GetStorageProReturnValue(const string &name);  void CopyRowData(char * pData,MYSQL_ROW row); // added by cailei     CStdString GetCurTime(time_t nTime=0);     long GetCurDate(time_t nTime=0);   www.2cto.com    MYSQL *m_hMySQL;  MYSQL_RES *m_pRes;  MYSQL_ROW m_Row;  MYSQL_FIELD *m_pFields;     long m_nRowSize;    bool m_bRegParam;                  // 是否注冊了過程返回變量   protected:     string m_sSvr;     string m_sUser;     string m_sPwd;     string m_sDB;     string m_sUserMode;     bool   m_bReopen; //是系統重新打開連接       int     m_nStatus; // 0 :SQL 空閒狀態 1 :有SQL語句等待執行 2:有結果數據待取出      int     m_nCount; //結果集記錄數量     int     m_nCode; //執行返回碼     int     m_nSQLSize; //默認是16K     string  m_sErr; //錯誤消息     char    *m_pSQL; //SQL語句     string  m_sSrc; //調用源     bool    m_bError; //語句執行是否出錯     int     m_nDBType;  //驅動類型     void    *m_pUniDBRecv; //保留     bool    m_bTran; //事務標志     void    *m_pReq;  www.2cto.com       byte    *m_pReqBuf;     int     m_nReqSize;     bool    m_bDebug; }; #endif // !defined(AFX_EMBEDDEDMYSQL_H__516724E2_889C_4899_9DAE_330CD4C5954F__INCLUDED_)     作者 蔡磊

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved