C++使用ADO2数据库类查询、添加、修改、删除操作

C++使用ADO2数据库类查询、添加、修改、删除操作

 

在工程中添加ado2.h、ado2.cpp两个文件

如果项目之前在XP在编译,在换到WINDOWS7编译时可能会出错,这是因为msado15.dll和MSJRO.DLL版本的问题。
XP SP3下 msado15.dll:2.81.3014.0  MSJRO.DLL:2.81.3012.0
此文件在:C:\Program Files\Common Files\System\ado目录下。

在需要使用数据库的文件中包含 ado2.h文件

连接数据库:
//保存数据库路径
CString  m_strDBCon;
char szTemp[MAX_PATH];
GetCurrentDirectory(MAX_PATH,szTemp);
m_strDBCon.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\BatchResults.mdb;Persist Security Info=False"),szTemp);
CADODatabase Cdb;
BOOL bRet = Cdb.Open(m_strDBCon);
if (!bRet)
{
MessageBox(NULL,"连接数据库出错!\r\n请确定程序目录是否有MDB文件!",_T("提示"),MB_ICONERROR);
return FALSE;
}
//关闭数据库
Cdb.Close();

 读取数据:
//打开数据库
CADODatabase Cdb;
CString strCon = m_strDBCon;
BOOL bRet = Cdb.Open(strCon);
if (!bRet)
{
MessageBox("连接数据库出错!\r\n请确定程序目录是否有MDB文件!",MSG_TS,MB_ICONERROR);
return FALSE;
}

CString strQuerySQL.Format(_T("SELECT * FROM T_NormalTpt WHERE GroupID = %d AND Barcode = '%s' ORDER BY TestDate DESC,Barcode ASC"),1,_T("222"));//查询语句
CADORecordset cRe(&Cdb);
bRet=cRe.Open(strQuerySQL,cRe.openQuery);
if (!bRet)
{
MessageBox("读取数据库记录失败!",MSG_TS,MB_ICONERROR);
Cdb.Close();
return 0;
}

int nRcount = 0;//记录总数
nRcount = cRe.GetRecordCount();
CString strGroupID,strCurrentNo,strBarCode,strElecCode,strSensor,strTemperature;
CString strTmp,strmA4,strmA20,strTestDate,strTester,strErrorCode,strDescription;
double dTemp;
while(!cRe.IsEof())
{
cRe.GetFieldValue(_T("GroupID"),strGroupID);//得到文本
cRe.GetFieldValue(_T("CurrentNo"),strCurrentNo);
cRe.GetFieldValue(_T("ElecCode"),strElecCode);
cRe.GetFieldValue(_T("Barcode"),strBarCode);
cRe.GetFieldValue(_T("Sensor"),dTemp);//得到double类型
strSensor.Format(_T("%.4f"),dTemp);
cRe.GetFieldValue(_T("Temperature"),dTemp);
strTemperature.Format(_T("%.4f"),dTemp);
cRe.GetFieldValue(_T("ElectricCurrent4"),dTemp);
strmA4.Format(_T("%.4f"),dTemp);
cRe.GetFieldValue(_T("ElectricCurrent20"),dTemp);
strmA20.Format(_T("%.4f"),dTemp);
cRe.GetFieldValue(_T("TestDate"),strTestDate);
cRe.GetFieldValue(_T("Tester"),strTester);
cRe.GetFieldValue(_T("ErrorCode"),strErrorCode);
cRe.GetFieldValue(_T("ErrorRes"),strDescription);
cRe.MoveNext();
}
//关闭数据库
cRe.Close();
Cdb.Close();

写入数据:
//打开数据库
CADODatabase Cdb;
CString strCon = m_strDBCon;
BOOL bRet = Cdb.Open(strCon);
if (!bRet)
{
MessageBox("连接数据库出错!\r\n请确定程序目录是否有MDB文件!",MSG_TS,MB_ICONERROR);
return FALSE;
}

//得到日期
CTime m_time = CTime::GetCurrentTime();
char szDate[50];
memset(szDate,0,50);
sprintf(szDate,"%d-%.2d-%.2d %.2d:%.2d:%.2d",m_time.GetYear(),m_time.GetMonth(),m_time.GetDay(),m_time.GetHour(),m_time.GetMinute(),m_time.GetSecond());

//保存日期
g_arrDeviceInfo[nGroupID-1][nCurrentNo-1].strTestDate = szDate;
CString strInSQL,strtemp;
strInSQL.Format(_T("INSERT INTO T_NormalTpt(GroupID,CurrentNo,ElecCode,Barcode,Sensor,\
Temperature,ElectricCurrent4,ElectricCurrent20,TestDate,Tester,ErrorCode,ErrorRes) VALUES("));//添加语句
strtemp.Format(_T("%d,"),1);
strInSQL += strtemp;
strtemp.Format(_T("%d,"),2);
strInSQL += strtemp;

strtemp.Format(_T("%u,"),1234456);
strInSQL += strtemp;

strtemp.Format(_T("'%s',"),_T("888888"));
strInSQL += strtemp;

strtemp.Format(_T("%.4f,"),12.633);
strInSQL += strtemp;

strtemp.Format(_T("%.4f,"),5556.32);
strInSQL += strtemp;

strtemp.Format(_T("%.4f,"),1.9999);
strInSQL += strtemp;

strtemp.Format(_T("%.4f,"),19.9999);
strInSQL += strtemp;

strtemp.Format(_T("'%s',"),szDate);
strInSQL += strtemp;

strtemp.Format(_T("'%s',"),_T("ZLY"));
strInSQL += strtemp;

strtemp.Format(_T("%d,"),100);
strInSQL += strtemp;
strtemp.Format(_T("'%s')"),_T("通过"));
strInSQL += strtemp;
CADOCommand Ccmd(&Cdb,strInSQL);
Ccmd.SetTimeout(5);
Ccmd.Execute(Ccmd.typeCmdText);
//关闭数据库
Cdb.Close();

如果遇到添加的记录已经存在时,请先使用查询语句,如果记录存在就更新不存在就添加。

删除表数据:
CString strEmptySQL;
strEmptySQL.Format(_T("DELETE * FROM T_BarCodes WHERE GroupID = %d"),1);//加了判断条件
CString strCon =  m_strDBCon;
CADODatabase Cdb;
BOOL bRet = Cdb.Open(strCon);
if (!bRet)
{
MessageBox("连接数据库出错!\r\n请确定程序目录是否有MDB文件!",MSG_TS,MB_ICONERROR);
return -1;
}
CADOCommand Ccmd(&Cdb,strEmptySQL);
Ccmd.SetTimeout(5);
Ccmd.Execute(Ccmd.typeCmdText);
//关闭数据库
Cdb.Close();

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值