
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
派生出的类必须通过IADORecordBinding接口才能绑定,调用它的BindToRecordset方法就行了。
(3). rs中的变量即是当前记录字段的值
| //Set sort and filter condition: // Step 4: Manipulate the data Rs1->Fields->GetItem("au_lname")->Properties->GetItem("Optimize")->Value = true; Rs1->Sort = "au_lname ASC"; Rs1->Filter = "phone LIKE '415 5*'"; Rs1->MoveFirst(); while (VARIANT_FALSE == Rs1->EndOfFile) { printf("Name: %s\t %s\tPhone: %s\n", (rs.lau_fnameStatus == adFldOK ? rs.m_szau_fname : ""), (rs.lau_lnameStatus == adFldOK ? rs.m_szau_lname : ""), (rs.lphoneStatus == adFldOK ? rs.m_szphone : "")); if (rs.lphoneStatus == adFldOK) strcpy(rs.m_szphone, "777"); TESTHR(picRs->Update(&rs)); // Add change to the batch Rs1->MoveNext(); } Rs1->Filter = (long) adFilterNone; ...... if (picRs) picRs->Release(); Rs1->Close(); pConn->Close(); |
| if(FAILED(picRs->AddNew(&rs))) ...... |
| //写入一张照片到数据库: VARIANT varChunk; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; //VT_ARRAY │ VT_UI1 CFile f("h:\\aaa.jpg",CFile::modeRead); BYTE bVal[ChunkSize+1]; UINT uIsRead=0; //Create a safe array to store the array of BYTES while(1) { uIsRead=f.Read(bVal,ChunkSize); if(uIsRead==0)break; rgsabound[0].cElements =uIsRead; rgsabound[0].lLbound = 0; psa = SafeArrayCreate(VT_UI1,1,rgsabound); for(long index=0;index<uIsRead;index++) { if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index]))) ::MessageBox(NULL,"啊,又出毛病了。","提示",MB_OK │ MB_ICONWARNING); } varChunk.vt = VT_ARRAY│VT_UI1; varChunk.parray = psa; try{ m_pRecordset->Fields->GetItem("photo")->AppendChunk(varChunk); } catch (_com_error &e) { CString str=(char*)e.Description(); ::MessageBox(NULL,str+"\n又出毛病了。","提示",MB_OK │ MB_ICONWARNING); } ::VariantClear(&varChunk); ::SafeArrayDestroyData( psa); if(uIsRead<ChunkSize)break; }//while(1) f.Close(); //从数据库读一张照片: CFile f; f.Open("h:\\bbb.jpg",CFile::modeWrite│CFile::modeCreate); long lPhotoSize = m_pRecordset->Fields->Item["photo"]->ActualSize; long lIsRead=0; _variant_t varChunk; BYTE buf[ChunkSize]; while(lPhotoSize>0) { lIsRead=lPhotoSize>=ChunkSize? ChunkSize:lPhotoSize; varChunk = m_pRecordset->Fields-> Item["photo"]->GetChunk(lIsRead); for(long index=0;index<lIsRead;index++) { ::SafeArrayGetElement(varChunk.parray,&index,buf+index); } f.Write(buf,lIsRead); lPhotoSize-=lIsRead; }//while() f.Close(); |
| VARIANT varChunk; SAFEARRAY *psa; SAFEARRAYBOUND rgsabound[1]; |
| uIsRead=f.Read(bVal,ChunkSize);//read array from a file. if(uIsRead==0)break; rgsabound[0].cElements =uIsRead; rgsabound[0].lLbound = 0; psa = SafeArrayCreate(VT_UI1,1,rgsabound); |
| for(long index=0;index<uIsRead;index++) { if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index]))) ::MessageBox(NULL,"出毛病了。","提示",MB_OK │ MB_ICONWARNING); } |
| varChunk.vt = VT_ARRAY│VT_UI1; varChunk.parray = psa; |
| BYTE buf[lIsRead]; for(long index=0;index<lIsRead;index++) { ::SafeArrayGetElement(varChunk.parray,&index,buf+index); } |
| BYTE *buf; SafeArrayAccessData(varChunk.parray, (void **)&buf); f.Write(buf,lIsRead); SafeArrayUnaccessData(varChunk.parray); |
| BYTE *buf; ::SafeArrayAccessData(psa, (void **)&buf); for(long index=0;index<uIsRead;index++) { buf[index]=bVal[index]; } ::SafeArrayUnaccessData(psa); varChunk.vt = VT_ARRAY│VT_UI1; varChunk.parray = psa; |
| // Check for whether bookmark set for a record if (VarBookmark.vt == VT_EMPTY) printf("No Bookmark set!\n"); else rst->Bookmark = VarBookmark; |
| rst->Filter = _bstr_t ("姓名='赵薇' AND 性别=’女’"); |
| rst->Filter = _bstr_t ("(姓名='赵薇' AND 性别=’女’) OR AGE<25"); |
| rst->Filter = _bstr_t ("(姓名='赵薇' OR 性别=’女’) AND AGE<25"); |
| rst->Filter = _bstr_t ("(姓名='赵薇' AND AGE<25) OR (性别=’女’ AND AGE<25)"); |
| rst->Filter = _bstr_t ("姓名 LIKE '*赵*' "); |
| rst->Filter = _bstr_t ("姓名 LIKE '赵*' "); |
| pRst->Fields->GetItem("姓名")->Properties-> GetItem("Optimize")->PutValue("True"); pRst->Find("姓名 = '赵薇'",1,adSearchForward); ...... pRst->Fields->GetItem("姓名")->Properties-> GetItem("Optimize")->PutValue("False"); pRst->Close(); |
| pRstAuthors->CursorLocation = adUseClient; pRstAuthors->Open("SELECT * FROM mytable", _variant_t((IDispatch *) pConnection), adOpenStatic, adLockReadOnly, adCmdText); ...... pRst->Sort = "姓名 DESC, 年龄 ASC"; |
关键字(即字段名)之间用逗号隔开,如果要以某关键字降序排序,则应在该关键字后加一空格,再加DESC(如上例)。升序时ASC加不加无所谓。本操作是利用索引进行的,并未进行物理排序,所以效率较高。
但要注意,在打开记录集之前必须将记录集的CursorLocation属性设置为adUseClient,如上例所示。Sort属性值在需要时随时可以修改。