VC数据库操作实例解析ADO技术一个辅助类来进行操作.docx
《VC数据库操作实例解析ADO技术一个辅助类来进行操作.docx》由会员分享,可在线阅读,更多相关《VC数据库操作实例解析ADO技术一个辅助类来进行操作.docx(16页珍藏版)》请在冰豆网上搜索。
![VC数据库操作实例解析ADO技术一个辅助类来进行操作.docx](https://file1.bdocx.com/fileroot1/2022-10/29/66b5aff1-7652-4dc0-ad9a-b3ba18982ad9/66b5aff1-7652-4dc0-ad9a-b3ba18982ad91.gif)
VC数据库操作实例解析ADO技术一个辅助类来进行操作
1、DataManage1.cpp:
//DataManage1.cpp:
implementationoftheCDataManageclass.
//
//////////////////////////////////////////////////////////////////////
#include"stdafx.h"
#include"DataManage1.h"
//#include"ExternDllHeader.h"
#include
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//HINSTANCEhInstance;
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDataManage:
:
CDataManage()
{
//hInstance=LoadLibrary("RxDLL.dll");
DataConn.CreateInstance(_uuidof(Connection));
DataRecord.CreateInstance(_uuidof(Recordset));
Record1.CreateInstance(_uuidof(Recordset));
Record1->CursorLocation=adUseClient;
Record2.CreateInstance(_uuidof(Recordset));
Record2->CursorLocation=adUseClient;
}
CDataManage:
:
~CDataManage()
{
DataConn->Release();
DataRecord->Release();
Record1->Release();
Record2->Release();
}
_ConnectionPtrCDataManage:
:
GetConn()
{
returnDataConn;
}
_RecordsetPtrCDataManage:
:
GetRecordset()
{
return(DataRecord);
}
boolCDataManage:
:
ConnectDatabase(CStringconstr)
{
DataConn->ConnectionString=(_bstr_t)constr;
//try
//{
DataConn->Open("","","",-1);
//}
//catch(...)
//{
//returnfalse;
//}
/*catch(_com_errore)///捕捉异常
{
CStringerrormessage;
errormessage.Format("连接数据库失败!
\r\n错误信息:
%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
returnfalse;
}*/
returntrue;
}
boolCDataManage:
:
ExecSQL(CStringsql)
{
_bstr_tsqltext=sql;
try
{
DataConn->Execute(sqltext,NULL,adCmdText);
}
catch(_com_error&e)
{
AfxMessageBox(e.ErrorMessage(),0,0);
returnfalse;
}
returntrue;
}
//人才id使用日期加序号
CStringCDataManage:
:
AutoNumber(CStringsTable,CStringsFieldName,CStringcategoryName)
{
CStringsTempNewNumber,sNewNumber,sSQL,sMaxNumber,sOldNumber;
sSQL.Format("SELECTMAX(%s)as最大编号FROM%s",sFieldName,sTable);
if(Record1->State==adStateOpen)
Record1->raw_Close();
try{
Record1->Open((_bstr_t)sSQL,GetConn().GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
}
catch(_com_error&e)
{
//GetADOErrors(e);
//AfxMessageBox(e.ErrorMessage(),0,0);
}
intnYear,nMonth,nDay;
CStringsYear,sMonth,sDay;
CTimetTime;
tTime=tTime.GetCurrentTime();
nYear=tTime.GetYear();
nMonth=tTime.GetMonth();
nDay=tTime.GetDay();
sYear.Format("%d",nYear);
sDay.Format("%d",nDay);
sMonth.Format("%d",nMonth);
sYear=sYear.Mid
(2);
sDay=Padl(sDay,2,"0");
sMonth=Padl(sMonth,2,"0");
if(Record1->RecordCount<1)
{
sNewNumber.Format("%s%s%s-000000001",sYear,sMonth,sDay);
}
else
{
_variant_tbh=Record1->GetCollect("最大编号");
if(bh.vt==VT_EMPTY||bh.vt==VT_NULL)
{
sNewNumber.Format("%s%s%s-000000001",sYear,sMonth,sDay);
gotoend;
}
CStringsOldDate,sNewDate;
Record1->MoveFirst();
sOldNumber=(char*)(_bstr_t)Record1->GetCollect("最大编号");
sOldDate=sOldNumber.Mid(0,6);
sNewDate.Format("%s%s%s",sYear,sMonth,sDay);
if(sOldDate==sNewDate)
{
sMaxNumber=sOldNumber.Mid(7);
sTempNewNumber.Format("%d",(atoi(sMaxNumber)+1));
sNewNumber.Format("%s%s%s-%s",sYear,sMonth,sDay,Padl(sTempNewNumber,9,"0"));
}
else
sNewNumber.Format("%s%s%s-000000001",sYear,sMonth,sDay);
}
//}
end:
returnsNewNumber;
}
CStringCDataManage:
:
Padl(CStringn,intin,CStringc)
{
inti;
CStringresult=n;
for(i=in-1;i>=strlen(n);i--){
//result=strcat((LPSTR)(LPCTSTR)c,result);?
0-00-0000-00000000
result=c+result;
}
returnresult;
}
/*
CStringCDataManage:
:
AutoNumber(CStringsTable,CStringsFieldName,CStringfatherID,intcategory)
{
CStringsNewNumber,sSQL,sMaxNumber,sTempNewNumber;
sSQL.Format("SELECT*FROM%swherefatherID='%s'",sTable,fatherID);
if(Record1->State==adStateOpen)
Record1->raw_Close();
try
{
Record1->Open((_bstr_t)sSQL,GetConn().GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
}
catch(_com_error&e)
{
//GetADOErrors(e);
//AfxMessageBox(e.ErrorMessage(),0,0);
}
intcount=Record1->RecordCount;
sSQL.Format("SELECTMAX(%s)as最大编号FROM%swherefatherID='%s'",sFieldName,sTable,fatherID);
if(Record1->State==adStateOpen)
Record1->raw_Close();
try
{
Record1->Open((_bstr_t)sSQL,GetConn().GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
}
catch(_com_error&e)
{
//GetADOErrors(e);
//AfxMessageBox(e.ErrorMessage(),0,0);
}
if(count<1)
{
switch(category)
{
case0:
sNewNumber="A";break;
case1:
sNewNumber="01";break;
default:
sNewNumber="001";break;
}
}
else
{
Record1->MoveFirst();
sMaxNumber=(char*)(_bstr_t)Record1->GetCollect("最大编号");
charx;
intbig;
switch(category)
{
case0: