VC++6.0 中用 ADO 存取 Access 数据库的一点总结

来源: 作者: 2007-10-26 出处:pcdog.com

access  access数据库  ddn  qq  ssl  
上一页 1 2 3 4 下一页 

  (1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果

  _RecordsetPtr  m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误。jingzhou xu
try
{
  m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段
  m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
  adOpenDynamic,
  adLockOptimistic,
  adCmdText);
}
catch(_com_error *e)
{
  AfxMessageBox(e->ErrorMessage());
}
    
(2)关闭结果集 m_pRecordset->Close();3.操作一个结果集

  (1)、遍历(读取)

  a)、用pRecordset->adoEOF来判断数据库指针是否已经移到结果集的末尾了;m_pRecordset->BOF判断是否 在第一条记录前面: while(!m_pRecordset->adoEOF)
{
  var = m_pRecordset->GetCollect("Name");
  if(var.vt != VT_NULL)
    strName = (LPCSTR)_bstr_t(var);
  var = m_pRecordset->GetCollect("Age");
  if(var.vt != VT_NULL)
    strAge = (LPCSTR)_bstr_t(var);
  m_AccessList.AddString( strName + " --> "+strAge );
  m_pRecordset->MoveNext();
}
    
b)、取得一个字段的值的办法有两种办法

  一是

  //表示取得第0个字段的值 m_pRecordset->GetCollect("Name");或者 m_pRecordset->GetCollect(_variant_t(long(0));二是

  pRecordset->get_Collect("COLUMN_NAME");或者 pRecordset->get_Collect(long(index));(2)、添加

  a)、调用m_pRecordset->AddNew();

  b)、调用m_pRecordset->PutCollect();给每个字段赋值

  c)、调用m_pRecordset->Update();确认

  (3)、修改

  (4)、删除

  a)、把记录指针移动到要删除的记录上,然后调用Delete(adAffectCurrent) try
{
  // 假设删除第二条记录
  m_pRecordset->MoveFirst();
  m_pRecordset->Move(1);    
  // 从0开始
  m_pRecordset->Delete(adAffectCurrent); 
  // 参数adAffectCurrent为删除当前记录
  m_pRecordset->Update();
}
catch(_com_error *e)
{
  AfxMessageBox(e->ErrorMessage());
}
4.直接执行SQL语句,除了要用到结果集其余的大部分功能都可以直接用SQL语言实现


更多内容请看PCdog.com--数据库相关文章专题
上一页 1 2 3 4 下一页 
上一篇:ADO操作access全过程和CListCtrl的用法
下一篇:用MFC + ADO 把jpg图象文件放入ACCESS库中