首先先给出执行sql语句的函数ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL),由自己加入到工程中
bool CTrade_MISApp::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)
{
if ( ADOSet->State == adStateOpen) ADOSet->Close();
try
{
ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);
return true;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return false;
}
}
函数是加在APP类中的,也同时在类中添加了一个变量_RecordsetPtr m_pADOSet,记录集指针变量
1.插入数据
_variant_t strQuery, Holder;
strQuery = "insert into suppliers (CompanyName, ContactName, Address, City) values
(' " + m_sCompany+" ' , ’ “+m_sPerson+" ' , ' "+m_sAddress+" ', ' "+ m_sCity+ " ')";
theApp.ADOEXecute(theApp.m_pADOSet, strQuery);
2.查询数据
_variant_t strQuery, Holder;
strQuery = "select * from suppliers where CompanyName = ' " +m_sCompany+ " ' ";
theApp.ADOEXecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();//获得查询结果数量
theApp.m_pADOSet->MOveFirst();
for(int i = 0 ; i < iCount; i++)
{
Holder = theApp.m_pADOSet->GetCollect("CompanyName");//得到具体字段的值
str = Holder.vt == VT_NULL ? "" : (char *)(_bstr_t)Holder;//将得到值转化为字符串,因为得到的是_variant_t类型
....................................
}
3.删除数据
_variant_t strQuery;
strQuery = "delete from suppliers where CompanyName='"+sCompany+"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
这里只是基本简单的语句调用,有时程序需要用到更为复杂的查询语句时,其实就是把sql嵌在字符串里,注意引号的书写。
