您的位置:首页 > 数据库

MFC中ADO数据库基本sql语句应用

2013-03-18 20:26 357 查看
首先先给出执行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嵌在字符串里,注意引号的书写。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库