本文整理汇总了C++中_RecordsetPtr::GetFields方法的典型用法代码示例。如果您正苦于以下问题:C++ _RecordsetPtr::GetFields方法的具体用法?C++ _RecordsetPtr::GetFields怎么用?C++ _RecordsetPtr::GetFields使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类_RecordsetPtr
的用法示例。
在下文中一共展示了_RecordsetPtr::GetFields方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QueryByCondit
void CBllHelp::QueryByCondit(_RecordsetPtr pRecordSet,vector<string> &vecField, vector<string> &vecRecordSet, long &lFieldCounts)
{
//判断存在记录
if(pRecordSet == NULL)
return ;
if (!vecRecordSet.empty())
{
vecRecordSet.clear();
}
if (!vecField.empty())
{
vecField.clear();
}
try
{
//字段个数
lFieldCounts = pRecordSet->GetFields()->GetCount();
adoDataTypeEnum enumDataType;
_bstr_t str;
//字段名称、类型、大小
for(long i = 0; i<lFieldCounts; i++)
{
str= pRecordSet->GetFields()->GetItem(i)->GetName();
vecField.push_back((LPSTR)str);
enumDataType = pRecordSet->GetFields()->GetItem(i)->GetType();
str = GetDataTypeString(enumDataType);
vecField.push_back((LPSTR)str);
str = pRecordSet->GetFields()->GetItem(i)->GetDefinedSize();
vecField.push_back((LPSTR)str);
}
pRecordSet->MoveFirst();
long lCounts = 0;
_variant_t var;
//获取记录
while(!pRecordSet->adoEOF)
{
for(long j=0; j<lFieldCounts; j++)
{
var=pRecordSet->GetCollect(j);
str=(_bstr_t)(var.vt==1?"":var);
vecRecordSet.push_back((LPSTR)str);
}
pRecordSet->MoveNext();
lCounts++;
}
}
catch(_com_error e)
{
//AfxMessageBox("记录为空");
}
}
示例2: SaveBufferField
//存Buffer
bool CRsDupRgn::SaveBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
if(pGoods == NULL) return false;
if(szFiledName == NULL) return false;
VARIANT varBLOB;
SAFEARRAY* psa;
CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
if(NULL == ep) return false;
BYTE* buffer = NULL;
long dataSize = ep->GetBufSize(0);
if(dataSize)
{
buffer = new BYTE[dataSize];
ep->GetBufAttr(0, (void*)buffer, dataSize);
long lSize=(long)dataSize;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound=0;
rgsabound[0].cElements=lSize;
psa=SafeArrayCreate(VT_UI1,1,rgsabound);
for(long i=0;i<lSize;i++)
{
SafeArrayPutElement(psa,&i,&buffer[i]);
}
varBLOB.vt=VT_ARRAY|VT_UI1;
varBLOB.parray=psa;
try
{
rs->GetFields()->GetItem(szFiledName)->AppendChunk(varBLOB);
}
catch(_com_error e)
{
PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN, STR_DBS_DUPRGN_SAVERGNOBJFAIL), e);
SAFE_DELETE_ARRAY(buffer);
return false;
}
SafeArrayDestroy(psa);
}
SAFE_DELETE_ARRAY(buffer);
return true;
}
示例3: LoadBufferField
//读Buffer
bool CRsDupRgn::LoadBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
if(pGoods == NULL) return false;
try
{
if(rs->GetadoEOF())
{
ReleaseRs(rs);
return false;
}
long lSize=0;
FieldsPtr fldPtr = rs->GetFields();
FieldPtr itemPtr = fldPtr->GetItem(szFiledName);
lSize = itemPtr->ActualSize;
if(lSize > 0)
{
_variant_t varBLOB;
varBLOB = itemPtr->GetChunk(lSize);
BYTE *pBuf=NULL;
SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
SafeArrayUnaccessData(varBLOB.parray);
// 清空SKILL
CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
if(ep)
ep->SetBufAttr(0, pBuf, lSize);
}
}
catch(_com_error e)
{
PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_LOADRGNOBJERR), e);
return false;
}
return true;
}
示例4: PutTbValue
/////////////////////////////////////////////////////////////////////////////////////////
//
// 在记录集中当前游标位置设置指定的字段的值
//
// IRecordset[in] 记录集智能指针
// FieldsName[in] 字段名
// Value[in] 新的值
//
// 如果有异常将调用ExceptionInfo函数
//
// 如果Value为空或全为空格字符,当指定的字段的类型为字符串型时,字段的值为空
// 如果字段的类型为数字型,字段的值为0
//
void CFoxBase::PutTbValue(_RecordsetPtr IRecordset, _variant_t FieldsName, CString Value)
{
adoDataTypeEnum DataType;
if(IRecordset==NULL)
return;
Value.TrimLeft();
Value.TrimRight();
try
{
if(Value.IsEmpty())
{
IRecordset->GetFields()->GetItem(FieldsName)->get_Type(&DataType);
if(DataType==adBSTR || DataType==adChar || DataType==adVarChar ||
DataType==adVarWChar ||DataType==adWChar)
{
Value=_T("");
}
else
{
Value=_T("0");
}
}
IRecordset->PutCollect(FieldsName,_variant_t(Value));
IRecordset->Update();
}
catch(_com_error /*&e*/)
{
// ExceptionInfo(e);
throw;
}
}
示例5: InsertNew
/////////////////////////////////////////////////////
//
// 在记录集的当前位置插入一条新记录
//
// IRecord[in] 记录集智能指针
//
// 函数成功返回TRUE,否则返回FALSE
// 如果有异常将调用ExceptionInfo函数
//
// 函数成功后记录集将指向新插入的空记录
//
BOOL CFoxBase::InsertNew(_RecordsetPtr &IRecord,int after)
{
int pos;
CMap<short,short&,_variant_t,_variant_t&> FieldMap;
CMap<short,short&,_variant_t,_variant_t&> newFieldMap; //将新增加的记录的值记下来
_variant_t TempValue;
short Item;
FieldsPtr IFields;
FieldPtr IField;
int pos1;
int nCount; //字段个数.
if(IRecord==NULL)
{
ExceptionInfo(_T("Recordset cann't be empty"));
return FALSE;
}
//如果记录集为空将插入一条新记录
if(IRecord->adoEOF && IRecord->BOF)
{
try
{
IRecord->AddNew();
IRecord->Update();
}
catch(_com_error &e)
{
ExceptionInfo(e);
return FALSE;
}
return TRUE;
}
else if(IRecord->adoEOF)
{
IRecord->AddNew();
IRecord->Update();
IRecord->MoveLast();
return true;
}
for(pos=0; !IRecord->adoEOF ;pos++)
{
try
{
IRecord->MoveNext();
}
catch(_com_error &e)
{
ExceptionInfo(e);
return FALSE;
}
}
//
// 查如一条新记录,并将刚开始所指的以后的记录向后移
//
try
{
IRecord->AddNew();
IRecord->Update();
IRecord->MoveLast();
//将新增加的记录的值记下来.
IFields = IRecord->GetFields();
nCount = IFields->GetCount(); //字段个数
for (Item = 0; Item < nCount; Item++)
{
newFieldMap[Item] = IRecord->GetCollect(_variant_t(Item));
}
IFields.Release();
//
IRecord->MovePrevious();
}
catch(_com_error &e)
{
ExceptionInfo(e);
return FALSE;
}
if(after==1)
pos--; //使pos再减一,变成在指针的当前位置上加入一条新记录,insert blank
pos1=pos;
while(pos>0)
{
try
{
for(Item=0;Item<nCount;Item++)
//.........这里部分代码省略.........