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

📄 adotable.cpp

📁 手机编程之接收发送短信
💻 CPP
📖 第 1 页 / 共 2 页
字号:

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个字符串
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		const char *fieldname : 字段名
//		char* result : 返回的字符串
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(const char *fieldname, char* result)
{
	try
	{
		if( pRecordSet->BOF ) {
			strcpy( sError, "光标在最前,无可读数据!" );
			return EV_ERR_NORECORD;
		}
		if ( pRecordSet->adoEOF ) {
			strcpy( sError, "光标在最后,无可读数据!" );
			return EV_ERR_NORECORD;
		}

		_variant_t vtTemp;
		vtTemp=pRecordSet->Fields->Item[fieldname]->Value;
		
		if(vtTemp.vt!=VT_NULL)
		{
			strcpy( result, LPCTSTR( _bstr_t(vtTemp)) );
		}else{
			// 为空,所以置成空字符串
			*result = 0;
		}

	}catch(_com_error &e){

		dump_com_error( e, sError, ERRORSTR_LEN, "ReadField读字符串出错!" );
		return EV_ERR_COM;
	}

	return EV_ERR_OK;

}

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个字符串
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		long lindex : 字段序号
//		char* result : 返回的字符串
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(long lindex, char* result)
{
	try
	{
		if( pRecordSet->BOF ) {
			strcpy( sError, "光标在最前,无可读数据!" );
			return EV_ERR_NORECORD;
		}
		if ( pRecordSet->adoEOF ) {
			strcpy( sError, "光标在最后,无可读数据!" );
			return EV_ERR_NORECORD;
		}

		_variant_t vtTemp;
		vtTemp=pRecordSet->Fields->Item[lindex]->Value;
		
		if(vtTemp.vt!=VT_NULL)
		{
			strcpy( result, LPCTSTR( _bstr_t(vtTemp)) );
		}else{
			// 为空,所以置成空字符串
			*result = 0;
		}

	}catch(_com_error &e){

		dump_com_error( e, sError, ERRORSTR_LEN, "ReadField读字符串出错!" );
		return EV_ERR_COM;
	}

	return EV_ERR_OK;

}

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个长整型数
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		const char *fieldname : 字段名
//		long &result :	返回的长整型数
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(const char *fieldname, long &result)
{
	try
	{
		if( pRecordSet->BOF ) {
			strcpy( sError, "光标在最前,无可读数据!" );
			return EV_ERR_NORECORD;
		}
		if ( pRecordSet->adoEOF ) {
			strcpy( sError, "光标在最后,无可读数据!" );
			return EV_ERR_NORECORD;
		}

		_variant_t vtTemp;
		vtTemp = pRecordSet->Fields->Item[fieldname]->Value;
		
		if(vtTemp.vt!=VT_NULL)	{
			result=long( vtTemp );
		}else{
			strcpy ( sError, "字段值为<NULL>" );
			return EV_ERR_VALUENULL;
		}

	}catch(_com_error &e){

		dump_com_error( e, sError, ERRORSTR_LEN, "ReadField()读长整型数出错!" );
		return EV_ERR_COM;
	}
	
	return EV_ERR_OK;
}

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个DWORD
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		const char *fieldname : 字段名
//		long &result :	返回的DWORD
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(const char *fieldname, DWORD &result)
{
	long lRet;
	int nRet = ReadField( fieldname, lRet );
	result = lRet;
	return nRet;
}

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个int
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		const char *fieldname : 字段名
//		long &result :	返回的int
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(const char *fieldname, int &result)
{
	long lRet;
	int nRet = ReadField( fieldname, lRet );
	result = lRet;
	return nRet;
}

//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadField
//	函数功能:从指定的字段中读取一个时间
//	返回值:参看EV_ERR系列宏定义,仅当返回EV_ERR_OK的时候正确
//	参数说明:
//		const char *fieldname : 字段名
//		COleDateTime& result : 返回读出的时间
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadField(const char *fieldname, COleDateTime& result)
{
	try
	{
		if( pRecordSet->BOF ) {
			strcpy( sError, "光标在最前,无可读数据!" );
			return EV_ERR_NORECORD;
		}
		if ( pRecordSet->adoEOF ) {
			strcpy( sError, "光标在最后,无可读数据!" );
			return EV_ERR_NORECORD;
		}

		_variant_t vtTemp;
		vtTemp = pRecordSet->Fields->Item[fieldname]->Value;
		
		if(vtTemp.vt!=VT_NULL)	{
			result= COleDateTime( vtTemp );
		}else{
			strcpy ( sError, "字段值为<NULL>" );
			return EV_ERR_VALUENULL;
		}

	}catch(_com_error &e){

		dump_com_error( e, sError, ERRORSTR_LEN, "ReadField()读DateTime时间错!" );
		return EV_ERR_COM;
	}
	
	return EV_ERR_OK;
}


//-------------------------------------------------------------------------------------------
//	函数名:CAdoTable::ReadImageField
//	函数功能:从指定的字段中读取ImageBlock,然后保存到一个文件中
//	返回值:EV_ERR_OK:正确
//			EV_ERR_COM:ADO数据库操作出错
//          EV_ERR_NORECORD:无可读数据
//	参数说明:
//		const char *fieldname : 字段名
//		char *szFileName : 目标文件名
//	备注:
//-------------------------------------------------------------------------------------------
int CAdoTable::ReadImageField(const char *fieldname, const char *szFileName )
{
	try
	{
		if( pRecordSet->BOF ) {
			strcpy( sError, "光标在最前,无可读数据!" );
			return EV_ERR_NORECORD;
		}
		if ( pRecordSet->adoEOF ) {
			strcpy( sError, "光标在最后,无可读数据!" );
			return EV_ERR_NORECORD;
		}

		_variant_t varBLOB;
		VariantInit (&varBLOB);
		
		long lDataLength = pRecordSet->GetFields()->GetItem( fieldname )->ActualSize;
		varBLOB = pRecordSet->GetFields()->GetItem( fieldname )->GetChunk ( lDataLength );
		
		if(varBLOB.vt == (VT_ARRAY | VT_UI1))
		{
			BYTE *pBuf = NULL;
			
			SafeArrayAccessData (varBLOB.parray,(void **)&pBuf);
			ASSERT( pBuf!=NULL );
			
			FILE *f;

			f = fopen( szFileName, "wb" );
			if ( !f ) {
				sprintf( sError, "ReadImageField()建立文件%s出错!", szFileName );
				SafeArrayUnaccessData (varBLOB.parray);
				return EV_ERR_CREATEFILE;
			}

			fwrite( pBuf, lDataLength, 1, f );
			fclose( f );
			
			SafeArrayUnaccessData (varBLOB.parray);

		}

	}catch(_com_error &e){

		dump_com_error( e, sError, ERRORSTR_LEN, "ReadImageField()读Image数据错!" );
		return EV_ERR_COM;
	}
	
	return EV_ERR_OK;
	
}





void CAdoTable::CloseRecordset()
{
	try
	{
		pRecordSet->Close();
	}
	catch(...)
	{
		return;
	}

}
bool CAdoTable::ExcuteSql(LPCTSTR szSql)
{
	try
	{
		CloseRecordset();
		pRecordSet->Open (_bstr_t(szSql), _variant_t((IDispatch*)(pConnect)),
			adOpenDynamic,adLockOptimistic, adCmdText);
		return true;
	}
	catch(...)
	{
		return false;

	}

}

⌨️ 快捷键说明

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