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

其他工作总结 时间:2020-02-28 01:23:11 收藏本文下载本文
【www.daodoc.com - 其他工作总结】

ADO编程总结(二)(整理)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“ado编程总结二”。

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编程总结(二)(整理)word格式文档
下载ADO编程总结(二)(整理).doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

相关专题 ado编程总结二 ADO
    热门文章
      整站推荐
        点击下载本文