VisualC++ADO数据库编程入门(2)
来源:优易学  2010-1-14 18:49:13   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  这种方法弄完了还要调用Update()。

  方法二(带参数):

  _variant_t varName[4],narValue[4];

  varName[0] = L"姓名";

  varName[1] = L"性别";

  varName[2] = L"age";

  varName[3] = L"marry";

  narValue[0]=_bstr_t("赵薇");

  narValue[1]=_bstr_t("女");

  narValue[2]=_variant_t((short)20);

  narValue[3]=_bstr_t("未婚");

  const int nCrit = sizeof varName / sizeof varName[0];

  // Create SafeArray Bounds and initialize the array

  SAFEARRAYBOUND rgsaName[1],rgsaValue[1]; rgsaName[0].lLbound = 0; rgsaName[0].cElements = nCrit; SAFEARRAY *psaName = SafeArrayCreate( VT_VARIANT, 1, rgsaName ); rgsaValue[0].lLbound = 0; rgsaValue[0].cElements = nCrit; SAFEARRAY *psaValue = SafeArrayCreate( VT_VARIANT, 1, rgsaValue );

  // Set the values for each element of the array

  HRESULT hr1=S_OK.hr2=S_OK;

  for( long i = 0 ; i < nCrit && SUCCEEDED( hr1 ) && SUCCEEDED( hr2 );i++)

  {

  hr1=SafeArrayPutElement(psaName, &i,&varName[i]); hr2=SafeArrayPutElement(psaValue, &i,&narValue[i]); }

  // Initialize and fill the SafeArray

  VARIANT vsaName,vsaValue; vsaName.vt = VT_VARIANT │ VT_ARRAY; vsaValue.vt = VT_VARIANT │ VT_ARRAY;

  V_ARRAY(&vsaName) = psaName;//&vsaName->parray=psaName;

  //see definition in oleauto.h file.

  V_ARRAY(&vsaValue) = psaValue;

  // Add a new record:

  m_pRecordset->AddNew(vsaName,vsaValue);

  这种方法不需要调用Update,因为添加后,ADO会自动调用它。此方法主要是使用SafeArray挺麻烦。

  方法三:就是用定义绑定类的方法(详见后面的介绍)。

  3、删除记录

  调用Recordset的Delete方法就行了,删除的是当前记录。要了解Delete的其它用法请查阅参考文献。

  try{

  m_pRecordset->MoveFirst();

  while(m_pRecordset->adoEOF==VARIANT_FALSE)

  {

  CString sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem

  (_variant_t("姓名"))->Value);

  if(::MessageBox(NULL,"姓名="+sName+"\n删除她吗?", "提示",MB_YESNO │ MB_ICONWARNING)==IDYES)

  {

  m_pRecordset->Delete(adAffectCurrent);

  m_pRecordset->Update();

  }

上一页  [1] [2] [3] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训