人人范文网 范文大全

ADO编程总结(二)(整理)

发布时间:2020-03-03 00:53:39 来源:范文大全 收藏本文 下载本文 手机版

ADO编程总结

(二)

Connection,Recordset,Command对象都可以对数据库进行访问,并对数据库进行操作,以下是实验例程,由以下例程可见,读取数据库都要用到Recordset对象,而Recordset和command虽然都可以不需要connection对象而独自对数据库访问(例程在此为给出,可查我在《Visual c++6.0开发指南》上所夹的打印资料),但最方便的方法还是先用connection对象建立对数据库的连接,然后以此conection对象作为Recordset和command的open参数,打开数据库。

使用ConnectionPtr接口访数据库,并添加数据

1、创建_ConnetionPtr对象并实例化

2、调用Open方法访数据库

3、调用Execute方法,执行SQL命令

4、例程如下:

//1 建立连接

_ConnectionPtr pCon;

HRESULT hr;

try

{

hr=pCon.CreateInstance(_uuidof(Connection));

if (FAILED(hr))

{

AfxMeageBox(\"Create Connection Instance Failed!\");

return;

}

pCon->ConnectionString=\"File Name=mydata.udl\";

pCon->ConnectionTimeout=20;

hr=pCon->Open(\"\",\"\",\"\",adConnectUnspecified);

if (FAILED(hr))

{

AfxMeageBox(\"Open Connection Failed!\");

return;

}

//2 利用Connection对象,为数据库添加数据CString strSQL=\"insert into DVDData values(1006,\'新闻联播\',\'2010-2-12\',3)\";COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);pRecordset=pCon->Execute(_bstr_t(strSQL),&vtOptional,-1);pCon.Release(); } catch(_com_error e) {bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());

} return;

使用RecordsetPtr接口访问数据库

1、创建_RecordsetPtr对象并实例化

2、调用Open方法访问数据库,数据源来自已建立连接的Connetcion对象

3、调用GetCollect方法获取数据库中的数据

4、例程如下:

_ConnectionPtr pCon;

_RecordsetPtr pRecordset;

HRESULT hr;

try

{

hr=pCon.CreateInstance(_uuidof(Connection));

if (FAILED(hr))

{

AfxMeageBox(\"Create Connection Instance Failed!\");

return;

}

pCon->ConnectionString=\"File Name=mydata.udl\";

pCon->ConnectionTimeout=20;

hr=pCon->Open(\"\",\"\",\"\",adConnectUnspecified);

if (FAILED(hr))

{

AfxMeageBox(\"Open Connection Failed!\");

return;

}

//2 利用Recordset对象,读取数据库数据

hr=pRecordset.CreateInstance(_uuidof(Recordset));

if (FAILED(hr))

{

AfxMeageBox(\"Create Recordset Instance Failed!\");

return;

}

CString strSQL=\"select * from DVDData\";

hr=pRecordset->Open(_variant_t(strSQL),pCon.GetInterfacePtr(),

adOpenDynamic,adLockOptimistic,adCmdText);if (FAILED(hr))

{

AfxMeageBox(\"Open Recordset Failed!\");

return;

}

_variant_t var; CString strValue; while(!pRecordset->rsEOF) {c=m_datalist.GetItemCount();var=pRecordset->GetCollect(\"编号\");if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var);m_datalist.InsertItem(c,strValue);var=pRecordset->GetCollect(\"名称\"); if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var); m_datalist.SetItemText(c,1,strValue);

var=pRecordset->GetCollect(\"日期\");

if (var.vt!=VT_NULL)

strValue=(LPCSTR)_bstr_t(var);

m_datalist.SetItemText(c,2,strValue);

var=pRecordset->GetCollect(\"数目\");

if (var.vt!=VT_NULL)

strValue=(LPCSTR)_bstr_t(var);

m_datalist.SetItemText(c,3,strValue);

pRecordset->MoveNext();

}

}

catch(_com_error e)

{

bstr_t bstrSource(e.Source());

_bstr_t bstrDescription(e.Description());

AfxMeageBox(bstrSource+bstrDescription);

return;

}

pRecordset->Close();

pRecordset=NULL;

pCon.Release();

5、为数据库添加数据

pRecordset->AddNew();

CString strNum;

strNum.Format(\"%d\",m_number);

pRecordset->PutCollect(\"编号\",_variant_t(strNum));

pRecordset->PutCollect(\"名称\",_variant_t(m_name)); pRecordset->PutCollect(\"日期\",_variant_t(m_date)); pRecordset->PutCollect(\"数目\",_variant_t(m_count)); pRecordset->Update();

使用Command对象打开数据库

1、定义_CommandPtr、_RecordsetPtr对象实例化_CommandPtr对象

2、使用Execute方法执行SQL命令,返回结果保存在Recordset对象中。

3、使用RecordsetPtr的GetCollect方法获取数据

4、例程如下:

_CommandPtr pCommand;

_RecordsetPtr pRecordset;

_ConnectionPtr pCon;

HRESULT hr;

try

{

hr=pCon.CreateInstance(_uuidof(Connection));

if (FAILED(hr))

{

AfxMeageBox(\"Create Connection Instance Failed!\");return;

}

pCon->ConnectionString=\"File Name=mydata.udl\";

pCon->ConnectionTimeout=20;

hr=pCon->Open(\"\",\"\",\"\",adConnectUnspecified);

if (FAILED(hr))

{

AfxMeageBox(\"Open Connection Failed!\");

return;

}

pCommand.CreateInstance(_uuidof(Command));

pCommand->ActiveConnection=pCon;

pCommand->CommandText=\"select * from DVDData\";

pCommand->Parameters->Refresh();

pRecordset=pCommand->Execute(NULL,NULL,adCmdText);

int c;

_variant_t var;

CString strValue;

while(!pRecordset->rsEOF)

{

c=m_datalist.GetItemCount();

var=pRecordset->GetCollect(\"编号\");

}if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var); m_datalist.InsertItem(c,strValue); var=pRecordset->GetCollect(\"名称\"); if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var); m_datalist.SetItemText(c,1,strValue); var=pRecordset->GetCollect(\"日期\"); if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var); m_datalist.SetItemText(c,2,strValue); var=pRecordset->GetCollect(\"数目\"); if (var.vt!=VT_NULL)strValue=(LPCSTR)_bstr_t(var); m_datalist.SetItemText(c,3,strValue);pRecordset->MoveNext();} } catch(_com_error e) {bstr_t bstrSource(e.Source());_bstr_t bstrDescription(e.Description());AfxMeageBox(bstrSource+bstrDescription);return; } pRecordset->Close(); pRecordset=NULL; pCon.Release();

ADO编程模型之VB数据库操作小结

编程题总结

编程题总结

描述性编程总结

编程入门基础知识总结

《C专家编程》总结

plc编程学习总结

刀具和编程总结

软件编程规范总结

一点Duilib编程总结

ADO编程总结(二)(整理)
《ADO编程总结(二)(整理).doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题 ado编程总结二 ADO
点击下载本文文档