⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbaccessunit.cpp

📁 指纹门禁机管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "DBAccessUnit.h"
#include "DMDataAccess.h"
#include <encddecd.hpp>
//---------------------------------------------------------------------------
TDBAccess::TDBAccess()
{
   aRV = OK;

}
//---------------------------------------------------------------------------
TDBAccess::~TDBAccess()
{


}
//---------------------------------------------------------------------------

int TDBAccess::ExecuteSQL(AnsiString iSQL)
{
  dmDatabase->adsExecute->Close();
  dmDatabase->adsExecute->SQL->Text = iSQL;
  try
  {
    dmDatabase->adsExecute->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

bool TDBAccess::UpdateDeviceState(int iDeviceID,int iState)//修改设备状态
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "Update Device set Flag=:Flag where DeviceID=:DeviceID";
  pExeQuery->Parameters->ParamByName("Flag")->Value = iState;
  pExeQuery->Parameters->ParamByName("DeviceID")->Value = iDeviceID;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

int  TDBAccess::GetDeviceInfo(int iDeviceID,DeviceInfo_T& oDeviceInfo)
{
   //得到设备信息
   TADOQuery* pQuery = dmDatabase->adsOp;

   pQuery->Close();
   pQuery->SQL->Text = "Select * from Device where DeviceID=" + AnsiString(iDeviceID);
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return DBAccess_E;
   }
   if (pQuery->IsEmpty())
     return DBIsEmpty_E;

   AnsiString lStrName;

   memset(&oDeviceInfo,0,sizeof(oDeviceInfo));
   oDeviceInfo.DeviceID = pQuery->FieldByName("DeviceID")->AsInteger;
   lStrName = pQuery->FieldByName("DeviceName")->AsString;
   strcpy(oDeviceInfo.DeviceName,lStrName.c_str());

   oDeviceInfo.DeviceType = (DeviceType_T)pQuery->FieldByName("DeviceType")->AsInteger;

   AnsiString lStr;
   lStr = pQuery->FieldByName("DeviceParam")->AsString;   //设备参数s

   //对设备参数进行Base64解码
   int lParamSize;
   DecodeData(lStr,(BYTE*)&oDeviceInfo.DeviceParams,&lParamSize);

   oDeviceInfo.AutoLockSec = pQuery->FieldByName("AutoLockSec")->AsInteger;
   oDeviceInfo.DeviceMode = (DeviceMode_T)pQuery->FieldByName("DeviceMode")->AsInteger;
   oDeviceInfo.DeviceStatus = (DeviceStatus_T)pQuery->FieldByName("Flag")->AsInteger;
   lStrName = pQuery->FieldByName("DeviceCaption")->AsString;
   strcpy(oDeviceInfo.DeviceCaption,lStrName.c_str());

   lStrName = pQuery->FieldByName("DeviceDesc")->AsString;
   strcpy(oDeviceInfo.DeviceDesc,lStrName.c_str());
   return OK;

}
//---------------------------------------------------------------------------

int TDBAccess::GetDeviceList(DeviceInfoArray_T& oDeviceInfoList)
{
   //得到设备链接列表
   TADOQuery* pQuery = dmDatabase->adsOp;

   pQuery->Close();
   pQuery->SQL->Text = "Select * from Device";
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return DBAccess_E;
   }
   DeviceInfo_T aDeviceInfo;
   AnsiString lStrName;
   oDeviceInfoList.clear();
   for(pQuery->First();!pQuery->Eof;pQuery->Next())
   {
     memset(&aDeviceInfo,0,sizeof(aDeviceInfo));

     aDeviceInfo.DeviceID = pQuery->FieldByName("DeviceID")->AsInteger;
     lStrName = pQuery->FieldByName("DeviceName")->AsString;
     strcpy(aDeviceInfo.DeviceName,lStrName.c_str());
     aDeviceInfo.DeviceType = (DeviceType_T)pQuery->FieldByName("DeviceType")->AsInteger;

     AnsiString lStr;
     lStr = pQuery->FieldByName("DeviceParam")->AsString;   //设备参数s

     //对设备参数进行Base64解码
     int lParamSize;
     DecodeData(lStr,(BYTE*)&aDeviceInfo.DeviceParams,&lParamSize);

     aDeviceInfo.AutoLockSec = pQuery->FieldByName("AutoLockSec")->AsInteger;
     aDeviceInfo.DeviceMode = (DeviceMode_T)pQuery->FieldByName("DeviceMode")->AsInteger;
     aDeviceInfo.DeviceStatus = (DeviceStatus_T)pQuery->FieldByName("Flag")->AsInteger;
     lStrName = pQuery->FieldByName("DeviceCaption")->AsString;
     strcpy(aDeviceInfo.DeviceCaption,lStrName.c_str());

     lStrName = pQuery->FieldByName("DeviceDesc")->AsString;
     strcpy(aDeviceInfo.DeviceDesc,lStrName.c_str());
     oDeviceInfoList.push_back(aDeviceInfo);
   }
   return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::InsertDeviceInfo(DeviceInfo_T iDeviceInfo)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "insert into Device(DeviceID,DeviceName,DeviceType,DeviceParam,DeviceCaption,AutoLockSec,DeviceDesc,DeviceMode,Flag) Values(:DeviceID,:DeviceName,:DeviceType,:DeviceParam,:DeviceCaption,:AutoLockSec,:DeviceDesc,:DeviceMode,:Flag)";
  pExeQuery->Parameters->ParamByName("DeviceID")->Value = iDeviceInfo.DeviceID;
  pExeQuery->Parameters->ParamByName("DeviceName")->Value = iDeviceInfo.DeviceName;
  pExeQuery->Parameters->ParamByName("DeviceType")->Value = (int)iDeviceInfo.DeviceType;

  //对设备参数进行Base64编码
  AnsiString lParam;
  EncodeData((BYTE*)&iDeviceInfo.DeviceParams,sizeof(iDeviceInfo.DeviceParams),lParam);
  pExeQuery->Parameters->ParamByName("DeviceParam")->Value = lParam;

  pExeQuery->Parameters->ParamByName("DeviceCaption")->Value = iDeviceInfo.DeviceCaption;
  pExeQuery->Parameters->ParamByName("AutoLockSec")->Value = (int)iDeviceInfo.AutoLockSec;
  pExeQuery->Parameters->ParamByName("DeviceDesc")->Value = iDeviceInfo.DeviceDesc;
  pExeQuery->Parameters->ParamByName("DeviceMode")->Value = iDeviceInfo.DeviceMode;
  pExeQuery->Parameters->ParamByName("Flag")->Value = iDeviceInfo.DeviceStatus;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;

}
//---------------------------------------------------------------------------
int TDBAccess::UpdateDeviceInfo(int iDeviceID,DeviceInfo_T iDeviceInfo)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "Update Device set DeviceName=:DeviceName,DeviceType=:DeviceType,DeviceParam=:DeviceParam,DeviceCaption=:DeviceCaption,AutoLockSec=:AutoLockSec,DeviceDesc=:DeviceDesc,DeviceMode=:DeviceMode,Flag=:Flag where DeviceID=:DeviceID";
  pExeQuery->Parameters->ParamByName("DeviceName")->Value = iDeviceInfo.DeviceName;
  pExeQuery->Parameters->ParamByName("DeviceType")->Value = (int)iDeviceInfo.DeviceType;

  //对设备参数进行Base64编码
  AnsiString lParam;
  EncodeData((BYTE*)&iDeviceInfo.DeviceParams,sizeof(iDeviceInfo.DeviceParams),lParam);
  pExeQuery->Parameters->ParamByName("DeviceParam")->Value = lParam;

  pExeQuery->Parameters->ParamByName("DeviceCaption")->Value = iDeviceInfo.DeviceCaption;
  pExeQuery->Parameters->ParamByName("AutoLockSec")->Value = (int)iDeviceInfo.AutoLockSec;
  pExeQuery->Parameters->ParamByName("DeviceDesc")->Value = iDeviceInfo.DeviceDesc;
  pExeQuery->Parameters->ParamByName("DeviceMode")->Value = iDeviceInfo.DeviceMode;
  pExeQuery->Parameters->ParamByName("Flag")->Value = iDeviceInfo.DeviceStatus;
  pExeQuery->Parameters->ParamByName("DeviceID")->Value = iDeviceInfo.DeviceID;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::DeleteDeviceInfo(int iDeviceID)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "delete from Device where DeviceID=:DeviceID";
  try
  {
    pExeQuery->Parameters->ParamByName("DeviceID")->Value = iDeviceID;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;

}
//---------------------------------------------------------------------------
bool TDBAccess::IsExistsDeviceInfo(int iDeviceID)
{
  TADOQuery* pQuery = dmDatabase->adsOp;
  pQuery->Close();
  pQuery->SQL->Text = "select * from Device where DeviceID=:DeviceID";
  try
  {
    pQuery->Parameters->ParamByName("DeviceID")->Value = iDeviceID;
    pQuery->Open();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return pQuery->RecordCount != 0;
}
//---------------------------------------------------------------------------

void TDBAccess::AddChildNodes(TTreeView* iTreeView,TTreeNode* iParsentNode,int iParsetID)
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->Close();
   pQuery->SQL->Text = "Select * from dept where ParsentDept="+AnsiString(iParsetID);
   pQuery->Open();
   AnsiString lDeptName;
   int lDeptID;
   for(pQuery->First();!pQuery->Eof;pQuery->Next())
   {
     lDeptName = pQuery->FieldByName("DeptName")->AsString;
     lDeptID = pQuery->FieldByName("DeptID")->AsInteger;

     TTreeNode* lNewNode = iTreeView->Items->AddChild(iParsentNode,lDeptName);

     lNewNode->ImageIndex = DeptNode_ICON;
     lNewNode->SelectedIndex = SelectedDeptNode_ICON;
     lNewNode->StateIndex = lDeptID;//当前选中的部门ID号
   }
   TTreeNode* pChildNode;
   for(int i=0;i<iParsentNode->Count;i++)
   {
     pChildNode = iParsentNode->Item[i];
     int lParentID = pChildNode->StateIndex;
     AddChildNodes(iTreeView,pChildNode,lParentID);
   }

}
//---------------------------------------------------------------------------

int TDBAccess::GetDeptTree(TTreeView* oDeptTree)
{
   AnsiString lDeptName;
   aRV = OK;
   TTreeNode* pRootNode = oDeptTree->TopItem;

   pRootNode->ImageIndex = RootNode_ICON;
   pRootNode->SelectedIndex = SelectedRootNode_ICON;

   AddChildNodes(oDeptTree,pRootNode,0);

   return aRV;
}
//---------------------------------------------------------------------------
int TDBAccess::InsertDeptInfo(DeptInfo_T iDeptInfo)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "insert into Dept(DeptName,ParsentDept,DeptDesc,Flag) Values(:DeptName,:ParsentDept,:DeptDesc,:Flag)";
  try
  {
    pExeQuery->Parameters->ParamByName("DeptName")->Value = AnsiString(iDeptInfo.DeptName);
    pExeQuery->Parameters->ParamByName("ParsentDept")->Value = iDeptInfo.ParsentDept;
    pExeQuery->Parameters->ParamByName("DeptDesc")->Value = AnsiString(iDeptInfo.DeptDesc);
    pExeQuery->Parameters->ParamByName("Flag")->Value = iDeptInfo.Flag;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;

}
//---------------------------------------------------------------------------
int TDBAccess::UpdateDeptInfo(int iDeptID,DeptInfo_T iDeptInfo)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "Update Dept set DeptName=:DeptName,ParsentDept=:ParsentDept,DeptDesc=:DeptDesc,Flag=:Flag where DeptID=:DeptID";
  try
  {
    pExeQuery->Parameters->ParamByName("DeptName")->Value = AnsiString(iDeptInfo.DeptName);
    pExeQuery->Parameters->ParamByName("ParsentDept")->Value = iDeptInfo.ParsentDept;
    pExeQuery->Parameters->ParamByName("DeptDesc")->Value = AnsiString(iDeptInfo.DeptDesc);
    pExeQuery->Parameters->ParamByName("Flag")->Value = iDeptInfo.Flag;
    pExeQuery->Parameters->ParamByName("DeptID")->Value = iDeptID;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::DeleteDeptInfo(int iDeptID)
{

  if(GetDeptUserCount(iDeptID) > 0)
    return DBIsEmployee_E;

  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "delete from Dept where DeptID=:DeptID";
  try
  {
    pExeQuery->Parameters->ParamByName("DeptID")->Value = iDeptID;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
AnsiString TDBAccess::GetDeptName(int iDeptID)
{
   //得到部门名称
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->Close();
   pQuery->SQL->Text = "Select DeptName from Dept where DeptID="+AnsiString(iDeptID);
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return NULL;
   }
   if (pQuery->IsEmpty())
   {
     return NULL;
   }
   AnsiString lDeptName = pQuery->FieldByName("DeptName")->AsString;
   return lDeptName;
}
//---------------------------------------------------------------------------
int TDBAccess::GetDeptInfo(int iDeptID,DeptInfo_T* oDeptInfo)
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->Close();
   pQuery->SQL->Text = "Select * from dept where DeptID="+AnsiString(iDeptID);
   pQuery->Open();
   if (!pQuery->IsEmpty())
   {
     oDeptInfo->DeptID = pQuery->FieldByName("DeptID")->AsInteger;
     oDeptInfo->ParsentDept = pQuery->FieldByName("ParsentDept")->AsInteger;
     AnsiString lName = pQuery->FieldByName("DeptName")->AsString;
     strcpy(oDeptInfo->DeptName,lName.c_str());

     lName = pQuery->FieldByName("DeptDesc")->AsString;
     strcpy(oDeptInfo->DeptDesc,lName.c_str());
     oDeptInfo->Flag = pQuery->FieldByName("Flag")->AsInteger;
     return OK;
   }
   return DBIsEmpty_E;
}
//---------------------------------------------------------------------------
int TDBAccess::GetFixedDeptID(DeptInfo_T* oFixedDeptInfo)
{
   //得到固定部门信息
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->Close();
   pQuery->SQL->Text = "Select * from dept where Flag = 1";
   pQuery->Open();
   if (!pQuery->IsEmpty())
   {
     oFixedDeptInfo->DeptID = pQuery->FieldByName("DeptID")->AsInteger;
     oFixedDeptInfo->ParsentDept = pQuery->FieldByName("ParsentDept")->AsInteger;
     AnsiString lName = pQuery->FieldByName("DeptName")->AsString;
     strcpy(oFixedDeptInfo->DeptName,lName.c_str());

     lName = pQuery->FieldByName("DeptDesc")->AsString;
     strcpy(oFixedDeptInfo->DeptDesc,lName.c_str());
     oFixedDeptInfo->Flag = pQuery->FieldByName("Flag")->AsInteger;
     return OK;
   }
   return DBIsEmpty_E;

}
//---------------------------------------------------------------------------
int TDBAccess::InitFixedDept()
{
  //初始化固定部门编号
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "delete from Dept where Flag = 1";
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  DeptInfo_T aDeptInfo;

  aDeptInfo.ParsentDept = 0;
  strcpy(aDeptInfo.DeptName,"未分配部门");
  strcpy(aDeptInfo.DeptDesc,"从设备上传的未分配部门的员工默认部门");
  aDeptInfo.Flag = 1;
  return InsertDeptInfo(aDeptInfo);

}
//---------------------------------------------------------------------------

bool TDBAccess::IsDeptIDExist(int iDeptID)//判断部门ID号是否存在
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -