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

📄 dbaccessunit.cpp

📁 指纹门禁机管理系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------

int TDBAccess::ClearTemplateInfo()
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "delete from EmptTemplate";
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

int TDBAccess::GetTemplateInfoList(int iUserID,TemplateInfoArray_T &oTemplateInfoList)//得到指纹数据列表
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->SQL->Text = "Select * from EmptTemplate where EmpID="+AnsiString(iUserID);
   pQuery->Close();
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return  DBAccess_E;
   }

   TemplateInfo_T aTemplateInfo;
   AnsiString lStrName;
   oTemplateInfoList.clear();
   for(pQuery->First();!pQuery->Eof;pQuery->Next())
   {
     memset(&aTemplateInfo,0,sizeof(aTemplateInfo));

     aTemplateInfo.EmpID = pQuery->FieldByName("EmpID")->AsInteger;
     aTemplateInfo.FingerType = pQuery->FieldByName("FingerType")->AsInteger;
     lStrName = pQuery->FieldByName("FingerTemplate")->AsString;
     int lTemplateSize;
     DecodeData(lStrName,aTemplateInfo.FingerTemplate,&lTemplateSize);

     oTemplateInfoList.push_back(aTemplateInfo);
   }
   return OK;
}
//---------------------------------------------------------------------------
int  TDBAccess::GetUserInfo_T(int iUserID,UserInfo_T& oUserInfo)
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   AnsiString lSQL = "Select * from Employee_T where EmpID="+AnsiString(iUserID);
   pQuery->Close();
   pQuery->SQL->Text = lSQL;
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return  DBAccess_E;
   }
   if (!pQuery->IsEmpty())
   {
     oUserInfo.UserID = pQuery->FieldByName("EmpID")->AsInteger;

     AnsiString lStrName = pQuery->FieldByName("EmpName")->AsString;
     strcpy(oUserInfo.EmpName,lStrName.c_str());

     oUserInfo.ManageClass = pQuery->FieldByName("ManageClass")->AsInteger;
     oUserInfo.DeptID = pQuery->FieldByName("DeptID")->AsInteger;
     oUserInfo.AttendPlan = pQuery->FieldByName("AttendPlan")->AsInteger;
     oUserInfo.VerifyMode = pQuery->FieldByName("VerifyMode")->AsInteger;
     oUserInfo.FingerCount = pQuery->FieldByName("FingerCount")->AsInteger;
     oUserInfo.IsUsePwd = pQuery->FieldByName("IsUsePsw")->AsInteger;

     lStrName = pQuery->FieldByName("EmpPwd")->AsString;
     strcpy(oUserInfo.EmpPwd,lStrName.c_str());

     oUserInfo.Flag = pQuery->FieldByName("Flag")->AsInteger;

     lStrName = pQuery->FieldByName("EmpDesc")->AsString;
     strcpy(oUserInfo.EmpDesc,lStrName.c_str());

     return OK;
   }
   return DBIsEmpty_E;
}
//---------------------------------------------------------------------------

int TDBAccess::InsertLog(LogInfoBase_T iLogData)
{
   //新增日志记录
   TADOQuery* pExeQuery = dmDatabase->adsExecute;
   pExeQuery->Close();
   pExeQuery->SQL->Text = "insert into EventLog(DeviceLogID,DeviceID,MainEmpID,ObjEmpID,EventTime,EventType,Flag) Values(:DeviceLogID,:DeviceID,:MainEmpID,:ObjEmpID,:EventTime,:EventType,:Flag)";
   pExeQuery->Parameters->ParamByName("DeviceLogID")->Value = iLogData.DeviceLogID;
   pExeQuery->Parameters->ParamByName("DeviceID")->Value = iLogData.DeviceID;
   pExeQuery->Parameters->ParamByName("MainEmpID")->Value = iLogData.MainEmpID;
   pExeQuery->Parameters->ParamByName("ObjEmpID")->Value = iLogData.ObjEmpID;
   pExeQuery->Parameters->ParamByName("EventTime")->Value = SystemTimeToDateTime(iLogData.EventTime);
   pExeQuery->Parameters->ParamByName("EventType")->Value = iLogData.OpType;
   pExeQuery->Parameters->ParamByName("Flag")->Value = iLogData.Flag;

   try
   {
     pExeQuery->ExecSQL();
   }
   catch(...)
   {
     return DBAccess_E;
   }
   return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::ClearEventLog()
{
   int lLogType = etNormalEvent;
   AnsiString lSQL = "delete from EventLog where EventType="+AnsiString(lLogType);
   return ExecuteSQL(lSQL);
}
//---------------------------------------------------------------------------
int TDBAccess::ClearEventLog(int iDeviceID)
{
   int lLogType = etNormalEvent;
   AnsiString lSQL = "delete from EventLog where DeviceID=" + AnsiString(iDeviceID)+ " and EventType="+AnsiString(lLogType);
   return ExecuteSQL(lSQL);
}
//---------------------------------------------------------------------------

int TDBAccess::ClearOperateLog()
{
   int lLogType = etNormalEvent;
   AnsiString lSQL = "delete from EventLog where EventType <> "+AnsiString(lLogType);
   return ExecuteSQL(lSQL);
}
//---------------------------------------------------------------------------
int TDBAccess::ClearOperateLog(int iDeviceID)
{
   //清除所有该设备的日志
   int lLogType = etNormalEvent;
   AnsiString lSQL = "delete from OperateLog where DeviceID=" + AnsiString(iDeviceID) + " and EventType <> "+AnsiString(lLogType);
   return ExecuteSQL(lSQL);
}
//---------------------------------------------------------------------------
int TDBAccess::GetMaxLogID(int iDeviceID,int& iLogID)
{
   return OK;
}
//---------------------------------------------------------------------------
bool TDBAccess::IsExistLog(int iDeviceID,int iLogID)//判断是否存在这条日志
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->Close();
   pQuery->SQL->Text = "Select * from EventLog where DeviceID="+AnsiString(iDeviceID)+" and DeviceLogID="+AnsiString(iLogID);
   pQuery->Open();
   if(pQuery->RecordCount > 0)
     return true;
   return false;
}
//---------------------------------------------------------------------------

int TDBAccess::InsertRoleData(EnguardRole_T iRole)
{
   //
  AnsiString lRoleString;
  EncodeData((BYTE*)&iRole,sizeof(EnguardRole_T),lRoleString);

  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "insert into GuardRole(RoleID,RoleData,Flag)Values(:RoleID,:RoleData,:Flag)";
  pExeQuery->Parameters->ParamByName("RoleID")->Value = 1;
  pExeQuery->Parameters->ParamByName("RoleData")->Value = lRoleString;
  pExeQuery->Parameters->ParamByName("Flag")->Value = 1;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::ReadRoleData(EnguardRole_T* oRole)
{
  TADOQuery* pQuery = dmDatabase->adsOp;
  pQuery->Close();
  pQuery->SQL->Text = "Select * from GuardRole where RoleID=1";
  try
  {
    pQuery->Open();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  if (!pQuery->IsEmpty())
  {
     AnsiString lRoleString = pQuery->FieldByName("RoleData")->AsString;
     int lRoleSize;
     DecodeData(lRoleString,(BYTE*)oRole,&lRoleSize);
     return OK;
  }
  return DBIsEmpty_E;
}
//---------------------------------------------------------------------------
int TDBAccess::UpdateRoleData(EnguardRole_T iRole)
{
  AnsiString lRoleString;
  EncodeData((BYTE*)&iRole,sizeof(EnguardRole_T),lRoleString);

  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "update GuardRole set RoleData=:RoleData,Flag=:Flag where RoleID=1";
  pExeQuery->Parameters->ParamByName("RoleData")->Value = lRoleString;
  pExeQuery->Parameters->ParamByName("Flag")->Value = 1;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
bool TDBAccess::IsExistRoleData()
{
  TADOQuery* pQuery = dmDatabase->adsOp;
  pQuery->Close();
  pQuery->SQL->Text = "Select * from GuardRole where RoleID=1";
  try
  {
    pQuery->Open();
  }
  catch(...)
  {
    return false;
  }
  return !pQuery->IsEmpty();

}
//---------------------------------------------------------------------------
bool TDBAccess::EncodeData(BYTE* iInData,int iInDataSize,AnsiString& oString)
{
   //对数据进行编码
   TMemoryStream* msToEncode = new TMemoryStream();
   msToEncode->Write(iInData,iInDataSize);
   msToEncode->Position = 0;
   TStringStream *msEncoded = new TStringStream("");
   EncodeStream(msToEncode,msEncoded);

   oString = msEncoded->DataString;
   delete msToEncode;
   delete msEncoded;
   return true;
}
//---------------------------------------------------------------------------
bool TDBAccess::DecodeData(AnsiString iToString,BYTE* oOutData,int* oOutDataSize)
{
   TStringStream *msDecoded = new TStringStream("");
   msDecoded->Write(iToString.c_str(),iToString.Length());
   msDecoded->Position = 0;

   TMemoryStream* msToDecode = new TMemoryStream();

   DecodeStream(msDecoded,msToDecode);

   *oOutDataSize = msToDecode->Size;
   msToDecode->Position = 0;
   msToDecode->Read(oOutData,msToDecode->Size);
   delete msToDecode;
   delete msDecoded;
   return true;

}
//---------------------------------------------------------------------------
int TDBAccess::ClearUserInfo_T()
{
  AnsiString lSQL = "delete from Employee_T";
  return ExecuteSQL(lSQL);
}
//---------------------------------------------------------------------------
int TDBAccess::InsertUserInfo_T(UserInfo_T iUserInfo)
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "insert into Employee_T(EmpID,EmpName,DeptID,ManageClass,AttendPlan,VerifyMode,FingerCount,IsUsePsw,EmpPwd,EmpDesc,Flag) Values(:EmpID,:EmpName,:DeptID,:ManageClass,:AttendPlan,:VerifyMode,:FingerCount,:IsUsePsw,:EmpPwd,:EmpDesc,:Flag)";
  try
  {
    pExeQuery->Parameters->ParamByName("EmpID")->Value = iUserInfo.UserID;
    AnsiString lEmpName = iUserInfo.EmpName;
    lEmpName = lEmpName.SubString(1,14);//有时会出现15个字节,c++ builder的bug
    pExeQuery->Parameters->ParamByName("EmpName")->Value = lEmpName.Trim();
    if(!IsDeptIDExist(iUserInfo.DeptID))
    {
       DeptInfo_T lFixedDeptInfo;
       GetFixedDeptID(&lFixedDeptInfo);
       iUserInfo.DeptID = lFixedDeptInfo.DeptID; 
    }
    pExeQuery->Parameters->ParamByName("DeptID")->Value = iUserInfo.DeptID;
    pExeQuery->Parameters->ParamByName("ManageClass")->Value = (int)iUserInfo.ManageClass;
    pExeQuery->Parameters->ParamByName("AttendPlan")->Value = (int)iUserInfo.AttendPlan;
    pExeQuery->Parameters->ParamByName("VerifyMode")->Value = (int)iUserInfo.VerifyMode;
    pExeQuery->Parameters->ParamByName("FingerCount")->Value = (int)iUserInfo.FingerCount;
    pExeQuery->Parameters->ParamByName("IsUsePsw")->Value = (int)iUserInfo.IsUsePwd;
    pExeQuery->Parameters->ParamByName("EmpPwd")->Value = AnsiString(iUserInfo.EmpPwd).Trim();
    pExeQuery->Parameters->ParamByName("EmpDesc")->Value = "";
    pExeQuery->Parameters->ParamByName("Flag")->Value = wsInService;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

int TDBAccess::InsertTemplateInfo_T(TemplateInfo_T iTemplateInfo)
{
  //如果上传上来的模板的最后四位是0,0,0,1则是防胁迫指纹
  char lCmp[4]={0x00,0x00,0x00,0x01};
  if(memcmp(iTemplateInfo.FingerTemplate+252,lCmp,4) == 0)
     iTemplateInfo.FingerType = 1;
  else
     iTemplateInfo.FingerType = 0;

  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  AnsiString lTemplateStr;
  EncodeData(iTemplateInfo.FingerTemplate,256,lTemplateStr);

  pExeQuery->Close();
  pExeQuery->SQL->Text = "insert into EmptTemplate_T(EmpID,FingerIndex,FingerType,FingerTemplate,Flag) Values(:EmpID,:FingerIndex,:FingerType,:FingerTemplate,:Flag)";
  pExeQuery->Parameters->ParamByName("EmpID")->Value = iTemplateInfo.EmpID;
  pExeQuery->Parameters->ParamByName("FingerIndex")->Value = 0;//GetTemplateCount(iTemplateInfo.EmpID)+1;
  pExeQuery->Parameters->ParamByName("FingerType")->Value = iTemplateInfo.FingerType;
  pExeQuery->Parameters->ParamByName("FingerTemplate")->Value = lTemplateStr;
  pExeQuery->Parameters->ParamByName("Flag")->Value = 0;//iTemplateInfo.Flag;
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------
int TDBAccess::ClearTemplateInfo_T()
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "delete from EmptTemplate_T";
  try
  {
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

int TDBAccess::GetTemplateInfoList_T(int iUserID,TemplateInfoArray_T &oTemplateInfoList)//得到指纹数据列表
{
   TADOQuery* pQuery = dmDatabase->adsOp;
   pQuery->SQL->Text = "Select * from EmptTemplate_T where EmpID="+AnsiString(iUserID);
   pQuery->Close();
   try
   {
     pQuery->Open();
   }
   catch(...)
   {
     return  DBAccess_E;
   }

   TemplateInfo_T aTemplateInfo;
   AnsiString lStrName;
   oTemplateInfoList.clear();
   for(pQuery->First();!pQuery->Eof;pQuery->Next())
   {
     memset(&aTemplateInfo,0,sizeof(aTemplateInfo));

     aTemplateInfo.EmpID = pQuery->FieldByName("EmpID")->AsInteger;
     aTemplateInfo.FingerType = pQuery->FieldByName("FingerType")->AsInteger;
     lStrName = pQuery->FieldByName("FingerTemplate")->AsString;
     int lTemplateSize;
     DecodeData(lStrName,aTemplateInfo.FingerTemplate,&lTemplateSize);

     oTemplateInfoList.push_back(aTemplateInfo);
   }
   return OK;
}
//---------------------------------------------------------------------------

int TDBAccess::GetTemplateCount_T(int iUserID)//获取员工指纹数
{
  TADOQuery* pQuery = dmDatabase->adsOp;
  pQuery->Close();
  pQuery->SQL->Text = "Select * from EmptTemplate_T where EmpID=:EmpID";
  pQuery->Parameters->ParamByName("EmpID")->Value = iUserID;
  try
  {
    pQuery->Open();
  }
  catch(...)
  {
    return -1;
  }
  return pQuery->RecordCount;
}
//---------------------------------------------------------------------------

int TDBAccess::UpdateTemplateCount_T(int iUserID,int iFingerCount)//修改员工指纹数
{
  TADOQuery* pExeQuery = dmDatabase->adsExecute;
  pExeQuery->Close();
  pExeQuery->SQL->Text = "Update Employee_T set FingerCount=:FingerCount where EmpID=:EmpID";
  try
  {
    pExeQuery->Parameters->ParamByName("FingerCount")->Value = iFingerCount;
    pExeQuery->Parameters->ParamByName("EmpID")->Value = iUserID;
    pExeQuery->ExecSQL();
  }
  catch(...)
  {
    return DBAccess_E;
  }
  return OK;
}
//---------------------------------------------------------------------------

#pragma package(smart_init)

⌨️ 快捷键说明

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