⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bbdblib.cpp

📁 中国移动的短信网关程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	assert(pConn);
	assert(pRs);
	m_prsThis=pRs;
	m_pConn=pConn;
}

void CBBRstValues::InitConnectAndRst(CBBAdoConnection *pBBAdoConn, _RecordsetPtr *pRs)
{
	InitConnectAndRst(pBBAdoConn->GetConnection(),pRs);
}

BOOL CBBRstValues::GetValueLong(long *lVal, _variant_t &vIndex)
{
	_variant_t value;
	try{

		if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)		
		{

#ifdef _DEBUG
			//AfxMessageBox("记录集未打开!");
#else
			//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
			return FALSE;
		}

		if((*m_prsThis)->adoEOF)
		{
			lVal=0;
			return FALSE;
		}

		value=(*m_prsThis)->GetCollect(vIndex);		
	}
	catch(_com_error)
	{
		ReportError();
		return FALSE;
	}
	catch(...)
	{
		//AfxMessageBox("数据库字段访问未知错误!请检查数据库是否改动。",MB_ICONINFORMATION);
		return FALSE;
	}	

	if(VerifyVTData(value))		
	{
		*lVal = long(value);
	}
	else
	{
		*lVal=0;
	}

	return TRUE;
}

BOOL CBBRstValues::GetValueStr(char *cVal, _variant_t &vIndex, int nFieldLen)
{
	char * c=NULL;
	_variant_t value;
	//DATE dt;
	//CString str;
	//COleDateTime da;
	
	//检查是数组
	//VERIFY(sizeof(cVal)<1);
	memset(cVal,0,sizeof(cVal));
	try
	{
		if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)
		{
#ifdef _DEBUG
			//AfxMessageBox("记录集未打开!");
#else
			//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
			return FALSE;
		}	

		if((*m_prsThis)->adoEOF)
		{
			cVal[0]='\0';
			return FALSE;
		}
		value = (*m_prsThis)->GetCollect(vIndex);
	}
	catch(_com_error)
	{
		ReportError();
		//AfxMessageBox("数据库字段访问错误!");
		return FALSE;
	}
	catch(...)
	{
		//AfxMessageBox("数据库字段访问未知错误!请检查数据库是否改动。",MB_ICONINFORMATION);
		return FALSE;
	}	
	
	if(VerifyVTData(value))
	{
		switch(value.vt)
		{
			case VT_BSTR:
				c = (char *)_com_util::ConvertBSTRToString( V_BSTR(&value) );	
				if(VerifyVTData(c))
				{											
					if(nFieldLen<=0)
					{
						strcpy(cVal,(char*)c);
					}
					else
					{
						strncpy(cVal, (char*)c, nFieldLen);
					}				
				}	
				delete c;
				c=NULL;
				break;
			case VT_I4:	
			case VT_DECIMAL:		
			case VT_UI4:
			case VT_I8:
			case VT_UI8:
			case VT_INT:
			case VT_UINT:
				long lVal;
				lVal = long(value);
				ltoa(lVal,cVal,10);				
				break;
			case VT_DATE:				
			/*	dt=value.date;
				da=COleDateTime(dt);				
				str=da.Format("%Y-%m-%d %H:%M:%S");
				//str=da.Format("%Y-%m-%d ");
				c=new char[64];
				memset(c,0,sizeof(char)*64);
				strcpy(c,str.GetBuffer(0));
				str.ReleaseBuffer();
				if(VerifyVTData(c))
				{											
					if(nFieldLen<=0)
					{
						strcpy(cVal,(char*)c);
					}
					else
					{
						strncpy(cVal, (char*)c, nFieldLen);
						cVal[nFieldLen]='\0';
					}				
				}	
				delete c;
				c=NULL;*/
				break;
			default:
#ifdef _DEBUG
			//	AfxMessageBox("未处理的字段数据类型,请处理!");
#else
				break;
#endif
				break;
		}
	}

	else
	{
		cVal[0]='\0';
	}
	return TRUE;
}

BOOL CBBRstValues::GetValueLong(long *lVal, long lIndex)
{
	_variant_t vIndex(lIndex);
	return GetValueLong(lVal,vIndex);
}

BOOL CBBRstValues::GetValueLong(long *lVal, LPCSTR lpszIndex)
{
	_variant_t vIndex(lpszIndex);
	return GetValueLong(lVal,vIndex);
}

BOOL CBBRstValues::VerifyVTData(char *pData)
{
	if(pData == NULL)
	{
		return FALSE;
	}
	return TRUE;
}

BOOL CBBRstValues::VerifyVTData(_variant_t &value)
{
	if(value.vt == VT_NULL)
	{
		return FALSE;
	}
	return TRUE;
}
/*
BOOL CBBRstValues::GetValueStr(CString& str,LPCSTR lpszFieldName,int nFieldLen)
{
	_variant_t vIndex(lpszFieldName);
	return GetValueStr(str,vIndex,nFieldLen);
}

BOOL CBBRstValues::GetValueStr(CString& str,UINT nFieldIndex,int nFieldLen)
{
	_variant_t vIndex((long)nFieldIndex);		
	return GetValueStr(str,vIndex,nFieldLen);
	
}

BOOL CBBRstValues::GetValueStr(CString& str,_variant_t &vIndex,int nFieldLen)
{
	TCHAR buffer[1024];
	if(nFieldLen > 1023) 
		nFieldLen = 1023;
	
	BOOL bResult=GetValueStr((char*)buffer,vIndex,nFieldLen);
	str.Format(buffer);
	str.TrimRight();
	return bResult;
}
*/
BOOL CBBRstValues::GetValueFloat(float* fVal,_variant_t &vIndex)
{
	_variant_t value;	
	try
	{
		if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)
		{
		
#ifdef _DEBUG
			//AfxMessageBox("记录集未打开!");
#else
			//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
			return FALSE;
		}
		
		if((*m_prsThis)->adoEOF)
		{
			fVal=0;
			return FALSE;
		}

		value=(*m_prsThis)->GetCollect(vIndex);			
	}
	catch(_com_error)
	{		
		ReportError();
		return FALSE;
	}
	catch(...)
	{
	//	AfxMessageBox("数据库字段访问未知错误!请检查连接数据库结构是否已经更改。",MB_ICONINFORMATION);
		return FALSE;
	}

	if(VerifyVTData(value))
	{
		*fVal = float(value);
	}
	else
	{
		*fVal = 0;
	}
	return TRUE;
}


BOOL CBBRstValues::GetValueFloat(float* fVal,long lIndex)
{
	_variant_t vIndex(lIndex);
	return GetValueFloat(fVal,vIndex);
}
/*
BOOL CBBRstValues::GetValueFloat(float* fVal,CString  strIndex)
{
	_variant_t vIndex(strIndex);
	return GetValueFloat(fVal,vIndex);
}
*/
BOOL CBBRstValues::GetValueStr(char *cVal,long lIndex,int nFieldLen)
{	
	_variant_t vIndex;
	vIndex=_variant_t(lIndex);
	return GetValueStr(cVal,vIndex);	
}

/*
BOOL CBBRstValues::GetValueStr(char *cVal,CString strIndex,int nFieldLen)
{	
	_variant_t vIndex;
	vIndex=_variant_t(strIndex);	
	return GetValueStr(cVal,vIndex);	
}
*/

void CBBRstValues::ReportError()
{
#ifdef _DEBUG
	try
	{
		for(long l=0;l<(*m_pConn)->Errors->Count;l++)
		{
			ErrorPtr pErr;
			pErr=(*m_pConn)->Errors->GetItem(l);
			//AfxMessageBox(pErr->Description);
		}		
	}
	catch(...)
	{
	//	AfxMessageBox("字段错误对象访问错误,请检查书写是否正确。");
	}
#else
	//MessageBox(NULL,"字段访问发生错误,请确认数据库结构没有改动。","字段访问",MB_ICONINFORMATION);
#endif
	//AfxMessageBox("数据库字段访问错误!");	
}
/*
BOOL CBBRstValues::GetValText(CString &strText, CString &strFieldName)
{
	_bstr_t varChunk;
	_bstr_t varNotes;
	long lngTotalsize,
       lngOffSet = 0,
       lngChunkSize = 100; 
	_variant_t vFieldName = _variant_t(strFieldName);
	lngTotalsize = (*m_prsThis)->Fields->Item[vFieldName]->ActualSize/2; 
	if (lngTotalsize <= 0)
		return FALSE;

	try
	{
		while (lngOffSet < lngTotalsize)
		{
			varChunk = (*m_prsThis)->Fields->Item[vFieldName]->GetChunk(lngChunkSize);
			varNotes = varNotes + varChunk;
			lngOffSet = lngOffSet + lngChunkSize;
		}
		strText=(char*)varNotes;
	}
	catch(_com_error)
	{
		ReportError();
		return FALSE;
	}
	catch(...)
	{

#ifdef _DEBUG
		AfxMessageBox("获取Text字段未知错误");
#endif
		return FALSE;
	}

	return TRUE;
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -