Files
envi-code/SourceCode/Code2026/sqliteserver/UIIADORXServer.cpp
T
2026-09-28 15:28:50 +08:00

867 lines
20 KiB
C++

#include "stdafx.h"
#include "UIIADORXServer.h"
#include "UIIImpADORXServer.h"
#include "UIIPackageDbOper.h"
#include "zlib.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#ifdef _WIN64
#import "msado60_Backcompat_x64.tlb" no_namespace rename("EOF", "EndOfFile") rename("EOS", "EndOfStream")
#else
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile") rename("EOS", "EndOfString")
#endif
CUIIADORXServer::CUIIADORXServer()
{
m_pImp = new CUIIImpADORXServer;
}
CUIIADORXServer::~CUIIADORXServer()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
delete pImpSrv;
m_pImp = NULL;
}
}
BOOL CUIIADORXServer::InitADOServer(LPCTSTR pszDbFileName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->InitADOServer(pszDbFileName);
}
return FALSE;
}
BOOL CUIIADORXServer::InitADOServer(LPCTSTR pszConnection,bool bDisplayException, int OptionEnum)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->InitADOServer(pszConnection,bDisplayException, (ConnectOptionEnum)OptionEnum);
}
return FALSE;
}
BOOL CUIIADORXServer::InitADOServer(LPCTSTR pszDSN,LPCTSTR pszUserID,LPCTSTR pszPassword, int eMode, int eCursor)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->InitADOServer(pszDSN,pszUserID,pszPassword, (ConnectModeEnum)eMode, (CursorTypeEnum)eCursor);
}
return FALSE;
}
BOOL CUIIADORXServer::GetConnection(CString& sConntion)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetConnection(sConntion);
}
return FALSE;
}
void CUIIADORXServer::SetDatabase(LPCTSTR pszDatabase)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->SetDatabase(pszDatabase);
}
}
LPCTSTR CUIIADORXServer::GetDatabase()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetDatabase();
}
return NULL;
}
void CUIIADORXServer::AppendAssocDatabase(LPCTSTR pszKey,LPCTSTR pszAssocDb)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->AppendAssocDatabase(pszKey,pszAssocDb);
}
}
BOOL CUIIADORXServer::AssocDatabase(LPCTSTR pszKey,CString& sAssocDb)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->AssocDatabase(pszKey,sAssocDb);
}
return FALSE;
}
void CUIIADORXServer::SetLoginID(LPCTSTR pszLoginName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->SetLoginID(pszLoginName);
}
}
LPCTSTR CUIIADORXServer::GetLoginID()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetLoginID();
}
return NULL;
}
void CUIIADORXServer::SetGroupID(LPCTSTR pszGroup)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->SetGroupID(pszGroup);
}
}
LPCTSTR CUIIADORXServer::GetGroupID()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetGroupID();
}
return NULL;
}
BOOL CUIIADORXServer::CreateOLEDBTable(LPCTSTR pszTableName,Ttable& arFields,LPCTSTR pszsDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->CreateOLEDBTable(pszTableName,arFields,pszsDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::CreateSQLSrvTable(LPCTSTR pszTableName,Ttable& arFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->CreateSQLSrvTable(pszTableName,arFields,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::IsSQLSrvTableExist(LPCTSTR pszTableName,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->IsSQLSrvTableExist(pszTableName,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::GetSQLSrvTableStru(LPCTSTR pszTableName,Ttable &arFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSQLSrvTableStru(pszTableName,arFields,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::GetSQLSrvTableStru(LPCTSTR pszTableName,CStringList &listField,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSQLSrvTableStru(pszTableName,listField,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::GetTableStructInfoEx(LPCTSTR pszTableName,Ttable& arFields)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetTableStructInfoEx(pszTableName,arFields);
}
return FALSE;
}
BOOL CUIIADORXServer::DeleteTable(LPCTSTR pszTableName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->DeleteTable(pszTableName);
}
return FALSE;
}
BOOL CUIIADORXServer::DeleteTable(CStringArray& arTableNames)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->DeleteTable(arTableNames);
}
return FALSE;
}
BOOL CUIIADORXServer::DeleteTableFields(LPCTSTR pszTableName,CStringArray& arFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->DeleteTableFields(pszTableName,arFields,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::DeleteTableFields(LPCTSTR pszTableName,LPCTSTR pszFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->DeleteTableFields(pszTableName,pszFields,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::AppendTableFields(LPCTSTR pszTableName,Ttable &arFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->AppendTableFields(pszTableName,arFields,pszDbName);
}
return FALSE;
}
BOOL CUIIADORXServer::AppendTableFields(LPCTSTR pszTableName, CUIITableField& arFields,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->AppendTableFields(pszTableName,arFields,pszDbName);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CString& sValue)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,sValue);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CStringArray &arStrValue)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,arStrValue);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CStringArray &arStrValue, int nFr, int nTo)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,arStrValue,nFr,nTo);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL, std::vector<CString>& arStrValue)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL, arStrValue);
}
return FALSE;
}
BOOL CUIIADORXServer::IsSelEmpty(LPCTSTR pszStrSQL)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->IsSelEmpty(pszStrSQL);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CStringList &listStrValue,BOOL bMakeLower)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,listStrValue,bMakeLower);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CStringList &listStrValue,int nFr,int nTo,BOOL bMakeLower)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,listStrValue,nFr,nTo,bMakeLower);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CUIIValueTable &valueTable,BOOL bUpdateLable)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,valueTable,bUpdateLable);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,CUIIValueTable &valueTable,int nFr, int nTo,BOOL bUpdateLable)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,valueTable,nFr,nTo,bUpdateLable);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszSKey_ValueSQL,CMapStringToString &mapKey_Value)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszSKey_ValueSQL,mapKey_Value);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszSKey_ValueSQL, std::map<CString, CString>& mapKey_Value)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszSKey_ValueSQL, mapKey_Value);
}
return FALSE;
}
int CUIIADORXServer::GetSelDataEx(LPCTSTR pszSelectSQL,CMapStringToString &mapFieldToValue)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelDataEx(pszSelectSQL,mapFieldToValue);
}
return FALSE;
}
int CUIIADORXServer::GetSelDataEx(LPCTSTR pszSelectSQL, std::map<CString, CString>& mapFieldToValue)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelDataEx(pszSelectSQL, mapFieldToValue);
}
return FALSE;
}
int CUIIADORXServer::GetSelDataEx(LPCTSTR pszSelectSQL, std::vector<std::vector<CString>>& datas)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelDataEx(pszSelectSQL, datas);
}
return FALSE;
}
int CUIIADORXServer::GetSelDataEx(LPCTSTR pszSelectSQL, std::vector<std::map<CString, CString>> &datas)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelDataEx(pszSelectSQL, datas);
}
return FALSE;
}
int CUIIADORXServer::GetSelData(LPCTSTR pszStrSQL,_variant_t &vResults,long &lAdoRow,long &lAdoCol)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->GetSelData(pszStrSQL,vResults,lAdoRow,lAdoCol);
}
return FALSE;
}
void CUIIADORXServer::GetSQLSrvTableNames(CStringList& listTables,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetSQLSrvTableNames(listTables,pszDbName);
}
}
void CUIIADORXServer::GetSQLSrvTableNames(CStringArray& arTables,LPCTSTR pszDbName)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetSQLSrvTableNames(arTables,pszDbName);
}
}
void CUIIADORXServer::GetTableNameArray(CStringArray& arTables,LPCTSTR pszTableType)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetTableNameArray(arTables,pszTableType);
}
}
void CUIIADORXServer::GetOLDBTableNameList(CStringList &listTables,LPCTSTR pszTableType)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetOLDBTableNameList(listTables,pszTableType);
}
}
void CUIIADORXServer::GetOLDBTableNameArray(CStringArray &arTables,LPCTSTR pszTableType)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
pImpSrv->GetOLDBTableNameArray(arTables,pszTableType);
}
}
static void SplitStrintToArray(LPCTSTR pszDescr,CStringArray& arInfo,TCHAR tcSpace)
{
if (pszDescr == NULL) return;
CString sDescr = pszDescr;
int nLen = sDescr.GetLength();
int i = 0;
CString sText = _T("");
TCHAR tchar = _T('\0');
for(i = 0;i < nLen;i++)
{
tchar = sDescr.GetAt(i);
if(tchar == tcSpace)
{
arInfo.Add(sText);
sText = _T("");
}
else
{
sText += tchar;
}
if(i == nLen - 1 && !sText.IsEmpty())
{
arInfo.Add(sText);
}
}
}
int CUIIADORXServer::InsertBlob(LPCTSTR pszSQL,void* pData,int nSize)
{
//insert into aecesign (id,name,login,password,descr,filename,guid,dwgimage) values (%d,'%s','%s','%s','%s','%s','%s',?)
CString sText = pszSQL;
sText.MakeLower();
int nFr = sText.Find(_T('('));
int nTo = sText.Find(_T(')'));
CString sFields,sValues,sTableName;
if (nFr != -1 && nTo != -1)
{
//(1234)
sFields = sText.Mid(nFr + 1,nTo - nFr - 1);
nFr = sText.Find(_T('('),nTo);
nTo = sText.Find(_T(')'),nFr);
if (nFr != -1 && nTo != -1)
{
sValues = sText.Mid(nFr + 1,nTo - nFr - 1);
nFr = sText.Find(_T("into"));
nTo = sText.Find(_T('('));
//into table (
sTableName = sText.Mid(nFr + 4,nTo - nFr - 4);
CStringArray arFields,arValues;
sFields.TrimLeft();
sFields.TrimRight();
sValues.TrimRight();
sValues.TrimLeft();
SplitStrintToArray(sFields,arFields,_T(','));
SplitStrintToArray(sValues,arValues,_T(','));
if (arFields.GetSize() == arValues.GetSize())
{
CUIIValueTable packagetable;
CStringArray arRec;
CString sName,sVale,sPackField;
for (int i = 0;i < arFields.GetSize();i++)
{
sName = arFields.GetAt(i);
sVale = arValues.GetAt(i);
sName.TrimLeft();
sName.TrimRight();
sVale.TrimLeft();
sVale.TrimRight();
if (sVale.CompareNoCase(_T("?")) == 0)//
{
sPackField = sName;
continue;
}
if (sVale.Find(_T("'")) != -1)
{
sVale.TrimLeft(_T("'"));
sVale.TrimRight(_T("'"));
arRec.Add(sName);
arRec.Add(sVale);
arRec.Add(_T("varchar"));
packagetable.AddValueRecord(arRec);
arRec.RemoveAll();
}
else if (sVale.Find(_T(".")) != -1)//СÊý
{
arRec.Add(sName);
arRec.Add(sVale);
arRec.Add(_T("float"));
packagetable.AddValueRecord(arRec);
arRec.RemoveAll();
}
else //°´ÕûÐÍ
{
arRec.Add(sName);
arRec.Add(sVale);
arRec.Add(_T("int"));
packagetable.AddValueRecord(arRec);
arRec.RemoveAll();
}
}
CUIIPackageDbOper packageDb;
packageDb.SetDbSrv(this);
if ( !sPackField.IsEmpty())
{
return packageDb.PutPackageToDb(pData,nSize,sTableName,sPackField,packagetable);
}
}
}
}
return 0;
}
int CUIIADORXServer::InsertBlob(LPCTSTR pszSQL,LPCTSTR pszFile)
{
_bstr_t bst(pszFile);
char* psFile = (char*)bst;
FILE* pFile = NULL;
#if ARX==16
pFile = fopen(psFile,"rb");
#else
fopen_s(&pFile,psFile,"rb");
#endif
byte* pData = NULL;
long l_file_size = 0;
if (pFile)
{
fseek(pFile,0,SEEK_END);
l_file_size = ftell(pFile);
fseek(pFile,0,SEEK_SET);
pData = new byte[l_file_size];
fread(pData,1,l_file_size,pFile);
fclose(pFile);
int nResult = 0;
#ifdef ZIP_DATA
//ѹËõ
uLong ldestLen = compressBound(l_file_size);
byte* pDest = new byte[ldestLen + sizeof(l_file_size)];
compress(pDest,&ldestLen,pData,l_file_size);
byte* pOffSize = pDest + ldestLen;
memcpy(pOffSize,&l_file_size,sizeof(l_file_size));
nResult = InsertBlob(pszSQL,pDest,(int)(ldestLen + sizeof(l_file_size) ) );
delete [] pDest;
#else
nResult = InsertBlob(pszSQL,pData,(int)(l_file_size ) );
#endif
delete [] pData;
return nResult;
}
return 0;
}
int CUIIADORXServer::UpdateBlob(LPCTSTR pszSQL,void* pData,int nSize)
{
// sSQL.Format(_T("update aecesign set bmpimage=? where id=%d"),nId);
// m_pDbSrv->UpdateBlob(sSQL,sBmpFile);
CString sText = pszSQL;
sText.MakeLower();
int nFr = sText.Find(_T("set"));
int nTo = sText.Find(_T("=?"));
if (nFr != -1 && nTo != -1)
{
//set bmpimage=?
CString sPackageField = sText.Mid(nFr + 3,nTo - nFr - 3);
sPackageField.TrimLeft();
sPackageField.TrimRight();
CUIIPackageDbOper packageDb;
packageDb.SetDbSrv(this);
return packageDb.UpdatePackage(sText,sPackageField,pData,nSize);
}
return 0;
}
int CUIIADORXServer::UpdateBlob(LPCTSTR pszSQL,LPCTSTR pszFile)
{
// sSQL.Format(_T("update aecesign set bmpimage=? where id=%d"),nId);
// m_pDbSrv->UpdateBlob(sSQL,sBmpFile);
CString sText = pszSQL;
sText.MakeLower();
int nFr = sText.Find(_T("set"));
int nTo = sText.Find(_T("=?"));
if (nFr != -1 && nTo != -1)
{
CUIIPackageDbOper packageDb;
packageDb.SetDbSrv(this);
CString sFile = pszFile;
_bstr_t bst(pszFile);
char* psFile = (char*)bst;
FILE* pFile = NULL;
#if ARX==16
pFile = fopen(psFile,"rb");
#else
fopen_s(&pFile,psFile,"rb");
#endif
byte* pData = NULL;
long l_file_size = 0;
if (pFile)
{
fseek(pFile,0,SEEK_END);
l_file_size = ftell(pFile);
fseek(pFile,0,SEEK_SET);
pData = new byte[l_file_size];
fread(pData,1,l_file_size,pFile);
fclose(pFile);
int nResult = 0;
#ifdef ZIP_DATA
//ѹËõ
uLong ldestLen = compressBound(l_file_size);
byte* pDest = new byte[ldestLen + sizeof(l_file_size) ];
compress(pDest,&ldestLen,pData,l_file_size);
byte* pOffSize = pDest + ldestLen;
memcpy(pOffSize,&l_file_size,sizeof(l_file_size));
nResult = UpdateBlob(pszSQL,pDest,(int)(ldestLen + sizeof(l_file_size) ) );
delete [] pDest;
#else
nResult = UpdateBlob(pszSQL,pData,(int)( l_file_size ) );
#endif
delete [] pData;
return nResult;
}
}
return 0;
}
int CUIIADORXServer::GetSelBlob(LPCTSTR pszSQL,void*& pData,int& nSize)
{
// sFile = _T("temp$$.equ");
// sSQL.Format(_T("select package from aec_package where ID=%d"),_ttoi(sID));
// sSQL.Format(_T("update aecesign set bmpimage=? where id=%d"),nId);
// m_pDbSrv->UpdateBlob(sSQL,sBmpFile);
CString sText = pszSQL;
sText.MakeLower();
int nFr = sText.Find(_T("set"));
int nTo = sText.Find(_T("=?"));
if (nFr != -1 && nTo != -1)
{
//set bmpimage=?
CString sPackageField = sText.Mid(nFr + 3,nTo - nFr - 3);
sPackageField.TrimLeft();
sPackageField.TrimRight();
CUIIPackageDbOper packageDb;
packageDb.SetDbSrv(this);
CString sFile = _T("temp$$.tmp");
if ( packageDb.OutPackageToFile(sFile,sText,sPackageField,FALSE) )
{
CFileException eFile;
CFile fileSave;
if (!fileSave.Open(sFile,CFile::modeReadWrite|CFile::shareDenyWrite|CFile::shareDenyRead|CFile::typeBinary,&eFile) )
{
return FALSE;
}
_variant_t varChunk;
long nLength = (long)fileSave.GetLength();
BYTE* pbuf;
pbuf = new BYTE[nLength];
if(pbuf == NULL)
return FALSE;
fileSave.Read(pbuf,nLength);
fileSave.Close();
pData = pbuf;
nSize = nLength;
return TRUE;
}
}
return 0;
}
int CUIIADORXServer::GetSelBlob(LPCTSTR pszSQL,LPCTSTR pszFilePath)
{
// sFile = _T("temp$$.equ");
// sSQL.Format(_T("select package from aec_package where ID=%d"),_ttoi(sID));
CString sText = pszSQL;
sText.MakeLower();
int nFr = sText.Find(_T("select"));
int nTo = sText.Find(_T("from"));
if (nFr != -1 && nTo != -1)
{
CString sPackageField = sText.Mid(nFr + 6,nTo - nFr - 6);
sPackageField.TrimLeft();
sPackageField.TrimRight();
CUIIPackageDbOper packageDbOper;
packageDbOper.SetDbSrv(this);
CString sFile = pszFilePath;
if ( packageDbOper.OutPackageToFile(sFile,sText,sPackageField,TRUE) )
{
return TRUE;
}
}
return 0;
}
BOOL CUIIADORXServer::ExecuteSQL(LPCTSTR pszStrSQL)
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->ExecuteSQL(pszStrSQL);
}
return FALSE;
}
BOOL CUIIADORXServer::IsDatabaseOpen()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
return pImpSrv->IsDatabaseOpen();
}
return FALSE;
}
IDispatch* CUIIADORXServer::GetConnectionPtr()
{
if (m_pImp != NULL)
{
CUIIImpADORXServer* pImpSrv = (CUIIImpADORXServer*)m_pImp;
_ConnectionPtr pConnect = pImpSrv->GetConnectionPtr();
return pConnect.Detach();
}
return NULL;
}
void CUIIADORXServer::BeginTrans()
{
_ConnectionPtr pConnect(GetConnectionPtr());
pConnect->BeginTrans();
}
void CUIIADORXServer::RollbackTrans()
{
_ConnectionPtr pConnect(GetConnectionPtr());
pConnect->RollbackTrans();
}
void CUIIADORXServer::CommitTrans()
{
_ConnectionPtr pConnect(GetConnectionPtr());
pConnect->CommitTrans();
}