82 lines
2.2 KiB
C++
82 lines
2.2 KiB
C++
#include <sql/sqldb.hpp>
|
|
#include <sql/sqlerror.hpp>
|
|
|
|
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;
|
|
}
|