Initial
This commit is contained in:
81
sql/SQLDB.CPP
Normal file
81
sql/SQLDB.CPP
Normal file
@@ -0,0 +1,81 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user