#include #include SQLDb::SQLDb(const String &nameData,const String &userID,const String &password) : mhEnvironment(0), mhConnection(0), mIsOkay(FALSE), mNameData(nameData), mUserID(userID), mPassword(password), mDisposition(InvalidDB) { if(mPassword.isNull())mPassword=" "; open(); } SQLDb::~SQLDb() { close(); } SQLDb &SQLDb::operator=(const SQLDb &someSQLDb) { close(); mhEnvironment=someSQLDb.mhEnvironment; mhConnection=someSQLDb.mhConnection; mNameData=someSQLDb.mNameData; mUserID=someSQLDb.mUserID; mPassword=someSQLDb.mPassword; mIsOkay=someSQLDb.mIsOkay; mDisposition=AssumeDB; return *this; } WORD SQLDb::open(const String &nameData,const String &userID,const String &password) { close(); mNameData=nameData; mUserID=userID; mPassword=password; return open(); } WORD SQLDb::open(void) { RETCODE sqlReturn; close(); if(SQL_SUCCESS!=::SQLAllocEnv((HENV*)&mhEnvironment))return FALSE; if(SQL_SUCCESS!=::SQLAllocConnect(mhEnvironment,(HDBC*)&mhConnection)){::SQLFreeEnv(mhEnvironment);return FALSE;} sqlReturn=::SQLConnect(mhConnection,(unsigned char*)((char*)mNameData),SQL_NTS,(unsigned char*)((char*)mUserID),SQL_NTS,(unsigned char*)((char*)mPassword),SQL_NTS); if(SQL_SUCCESS!=sqlReturn&&SQL_SUCCESS_WITH_INFO!=sqlReturn) { sqlReturn=::SQLConnect(mhConnection,(unsigned char*)((char*)mNameData),SQL_NTS,(unsigned char*)((char*)mUserID),SQL_NTS,(unsigned char*)((char*)mPassword),SQL_NTS); if(SQL_SUCCESS!=sqlReturn&&SQL_SUCCESS_WITH_INFO!=sqlReturn) { ::SQLFreeConnect(&mhConnection); ::SQLFreeEnv(mhEnvironment); return FALSE; } } mDisposition=CloseDB; return (mIsOkay=TRUE); } WORD SQLDb::close(void) { if(!mIsOkay)return FALSE; if(CloseDB==mDisposition) { __try{if(mhConnection){::SQLDisconnect(mhConnection);::SQLFreeConnect(mhConnection);mhConnection=0;}} __except(0,EXCEPTION_EXECUTE_HANDLER){mIsOkay=FALSE;mDisposition=InvalidDB;return FALSE;} } mIsOkay=FALSE; mDisposition=InvalidDB; return TRUE; } WORD SQLDb::transact(TransactType transactType) { RETCODE sqlReturn; if(!isOkay())return FALSE; sqlReturn=::SQLTransact(mhEnvironment,mhConnection,(UINT)transactType); if(SQL_SUCCESS!=sqlReturn||SQL_SUCCESS_WITH_INFO!=sqlReturn)return FALSE; return TRUE; }