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

📄 adorecordset.cpp

📁 这是一个学校管理系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	catch (_com_error &e)
	{
		m_errormessage.Format(_T("Warning: GetPageCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}

BOOL CAdoRecordSet::SetCacheSize(const long &lCacheSize)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		if (m_pRecordset != NULL && !(GetState() & adStateExecuting))
		{
			m_pRecordset->PutCacheSize(lCacheSize);
		}
	}
	catch (const _com_error& e)
	{
		m_errormessage.Format(_T("Warning: SetCacheSize方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return FALSE;
	}
	return TRUE;
}

long CAdoRecordSet::GetPageSize()
{
	ASSERT(m_pRecordset != NULL);
	
	try
	{
		return m_pRecordset->GetPageSize();
	}
	catch (_com_error &e)
	{
		m_errormessage.Format(_T("Warning: GetPageCount 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}

/*========================================================================
	name:		指定当前记录所在的页.
    ----------------------------------------------------------
	returns:	置或返回从 1 到 Recordset 对象 (PageCount) 所含页数的长整型
			值,或者返回以下常量. 
	[常量]			[说明]
	---------------------------------
	adPosUnknown	Recordset 为空,当前位置未知,或者提供者不支持 AbsolutePage 属性.  
	adPosBOF		当前记录指针位于 BOF(即 BOF 属性为 True).  
	adPosEOF		当前记录指针位于 EOF(即 EOF 属性为 True).  
==========================================================================*/
BOOL CAdoRecordSet::SetAbsolutePage(int nPage)
{
	ASSERT(m_pRecordset != NULL);
	
	try
	{
		m_pRecordset->PutAbsolutePage((enum PositionEnum)nPage);		
		return TRUE;
	}
	catch(_com_error &e)
	{
		m_errormessage.Format(_T("Warning: SetAbsolutePage 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return FALSE;
	}
}

long CAdoRecordSet::GetAbsolutePage()
{
	ASSERT(m_pRecordset != NULL);
	
	try
	{
		return m_pRecordset->GetAbsolutePage();
	}
	catch(_com_error &e)
	{
		m_errormessage.Format(_T("Warning: GetAbsolutePage 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}

/*========================================================================
	name:		指定 Recordset 对象当前记录的序号位置. 
    ----------------------------------------------------------
	returns:	设置或返回从 1 到 Recordset 对象 (PageCount) 所含页数的长整
			型值,或者返回以下常量. 
	[常量]			[说明]
	---------------------------------
	adPosUnknown	Recordset 为空,当前位置未知,或者提供者不支持 AbsolutePage 属性.  
	adPosBOF		当前记录指针位于 BOF(即 BOF 属性为 True).  
	adPosEOF		当前记录指针位于 EOF(即 EOF 属性为 True).  
    ----------------------------------------------------------
	Remarks:		使用 AbsolutePosition 属性可根据其在 Recordset 中的序号
	位置移动到记录,或确定当前记录的序号位置. 提供者必须支持该属性的相应功
	能才能使用该属性. 
		同 AbsolutePage 属性一样,AbsolutePosition 从 1 开始,并在当前记录
	为 Recordset 中的第一个记录时等于 1. 从 RecordCount 属性可获得 Recordset 
	对象的总记录数. 
		设置 AbsolutePosition 属性时,即使该属性指向位于当前缓存中的记录,
	ADO 也将使用以指定的记录开始的新记录组重新加载缓存. CacheSize 属性决定
	该记录组的大小. 
		注意   不能将 AbsolutePosition 属性作为替代的记录编号使用. 删除前面
	的记录时,给定记录的当前位置将发生改变. 如果 Recordset 对象被重新查询或
	重新打开,则无法保证给定记录有相同的 AbsolutePosition. 书签仍然是保持和
	返回给定位置的推荐方式,并且在所有类型的 Recordset 对象的定位时是唯一的
	方式. 
==========================================================================*/
BOOL CAdoRecordSet::SetAbsolutePosition(int nPosition)
{
	ASSERT(m_pRecordset != NULL);
	
	try
	{
		m_pRecordset->PutAbsolutePosition((enum PositionEnum)nPosition);		
		return TRUE;
	}
	catch(_com_error &e)
	{
		m_errormessage.Format(_T("Warning: SetAbsolutePosition 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return FALSE;
	}
}

long CAdoRecordSet::GetAbsolutePosition()
{
	ASSERT(m_pRecordset != NULL);
	
	try
	{
		return m_pRecordset->GetAbsolutePosition();
	}
	catch(_com_error &e)
	{
		m_errormessage.Format(_T("Warning: GetAbsolutePosition 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}

BOOL CAdoRecordSet::SetCursorLocation(CursorLocationEnum CursorLocation)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		m_pRecordset->PutCursorLocation(CursorLocation);
		return TRUE;
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: PutCursorLocation 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return FALSE;
	}
}

CursorLocationEnum CAdoRecordSet::GetCursorLocation()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->GetCursorLocation();
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetCursorLocation 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return adUseNone;
	}
}

BOOL CAdoRecordSet::SetCursorType(CursorTypeEnum CursorType)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		m_pRecordset->PutCursorType(CursorType);
		return TRUE;
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: SetCursorType 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return FALSE;
	}
}

CursorTypeEnum CAdoRecordSet::GetCursorType()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->GetCursorType();
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetCursorType 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return adOpenUnspecified;
	}
}

/*========================================================================
	Remarks:	Recordset 对象包括 Field 对象组成的 Fields 集合. 每个Field
	 对象对应 Recordset 集中的一列.
==========================================================================*/
FieldsPtr CAdoRecordSet::GetFields()
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->GetFields();
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFields 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return NULL;
	} 
	return NULL;
}

/*========================================================================
	Remarks:	取得指定列字段的字段名.
==========================================================================*/
CString CAdoRecordSet::GetFieldName(long lIndex)
{
	ASSERT(m_pRecordset != NULL);
	CString strFieldName;
	try
	{
		strFieldName = LPCTSTR(m_pRecordset->Fields->GetItem(_variant_t(lIndex))->GetName());
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFieldName 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
	}
	return strFieldName;
}

/*========================================================================
	name:		取得 Field 对象一项或多项属性.
    ----------------------------------------------------------
	returns:	对于 Field 对象, Attributes 属性为只读, 其值可能为以下任意
		一个或多个 FieldAttributeEnum 值的和.
	  [常量]				[说明] 
	  -------------------------------------------
	  adFldMayDefer			指示字段被延迟, 即不从拥有整个记录的数据源检索
						字段值, 仅在显式访问这些字段时才进行检索. 
	  adFldUpdatable		指示可以写入该字段. 
	  adFldUnknownUpdatable 指示提供者无法确定是否可以写入该字段. 
	  adFldFixed			指示该字段包含定长数据. 
	  adFldIsNullable		指示该字段接受 Null 值. 
	  adFldMayBeNull		指示可以从该字段读取 Null 值. 
	  adFldLong				指示该字段为长二进制字段. 并指示可以使用 AppendChunk 
						和 GetChunk 方法. 
	  adFldRowID			指示字段包含持久的行标识符, 该标识符无法被写入
						并且除了对行进行标识(如记录号、唯一标识符等)外不
						存在有意义的值. 
	  adFldRowVersion		指示该字段包含用来跟踪更新的某种时间或日期标记. 
	  adFldCacheDeferred	指示提供者缓存了字段值, 并已完成随后对缓存的读取. 
==========================================================================*/
long CAdoRecordSet::GetFieldAttributes(long lIndex)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->Fields->GetItem(_variant_t(lIndex))->GetAttributes();
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFieldAttributes 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}

long CAdoRecordSet::GetFieldAttributes(LPCTSTR lpszFieldName)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->Fields->GetItem(_variant_t(lpszFieldName))->GetAttributes();
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFieldAttributes 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}
}


/*========================================================================
	Name:	取得字段的值的实际长度.
    ----------------------------------------------------------
	returns:	返回长整型值.某些提供者允许设置该属性以便为 BLOB 数据预留
			空间, 在此情况下默认值为 0.
    ----------------------------------------------------------
	Remarks:	使用 ActualSize 属性可返回 Field 对象值的实际长度.对于所有
			字段,ActualSize 属性为只读.如果 ADO 无法确定 Field 对象值的实
			际长度, ActualSize 属性将返回 adUnknown.
				如以下范例所示, ActualSize 和  DefinedSize 属性有所不同: 
			adVarChar 声明类型且最大长度为 50 个字符的 Field 对象将返回为 
			50 的 DefinedSize 属性值, 但是返回的 ActualSize 属性值是当前记
			录的字段中存储的数据的长度.
==========================================================================*/
long CAdoRecordSet::GetFieldActualSize(long lIndex)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->Fields->GetItem(_variant_t(lIndex))->ActualSize;
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFieldActualSize 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}	
}

long CAdoRecordSet::GetFieldActualSize(LPCTSTR lpszFieldName)
{
	ASSERT(m_pRecordset != NULL);
	try
	{
		return m_pRecordset->Fields->GetItem(_variant_t(lpszFieldName))->ActualSize;
	}
	catch (_com_error e)
	{
		m_errormessage.Format(_T("Warning: GetFieldActualSize 方法发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
		AfxMessageBox(m_errormessage);
		return -1;
	}	
}

/*========================================================================
	returns:	返回下列值之一. 相应的 OLE DB 类型标识符在下表的说明栏的括
			号中给出.
	  [常量]			[说明] 
	  ---------------------------------------------------------
	  adArray			与其他类型一起加入逻辑 OR 以指示该数据是那种类型的
					安全数组 (DBTYPE_ARRAY). 
	  adBigInt			8 字节带符号的整数 (DBTYPE_I8). 
	  adBinary			二进制值 (DBTYPE_BYTES). 
	  adBoolean			布尔型值 (DBTYPE_BOOL). 
	  adByRef			与其他类型一起加入逻辑 OR 以指示该数据是其他类型数
					据的指针 (DBTYPE_BYREF). 
	  adBSTR			以空结尾的字符串 (Unicode) (DBTYPE_BSTR). 
	  adChar			字符串值 (DBTYPE_STR). 
	  adCurrency		货币值 (DBTYPE_CY).货币数字的小数点位置固定、小数
					点右侧有四位数字.该值保存为 8 字节范围为10,000 的带符
					号整型值. 
	  adDate			日期值 (DBTYPE_DATE).日期按双精度型数值来保存, 数
					字全部表示从 1899 年 12 月 30 开始的日期数.小数部分是
					一天当中的片段时间. 
	  adDBDate			日期值 (yyyymmdd) (DBTYPE_DBDATE). 
	  adDBTime			时间值 (hhmmss) (DBTYPE_DBTIME). 
	  adDBTimeStamp		时间戳 (yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP). 
	  adDecimal			具有固定精度和范围的精确数字值 (DBTYPE_DECIMAL). 
	  adDouble			双精度浮点值 (DBTYPE_R8). 
	  adEmpty			未指定值 (DBTYPE_EMPTY). 
	  adError			32 - 位错误代码 (DBTYPE_ERROR). 
	  adGUID			全局唯一的标识符 (GUID) (DBTYPE_GUID). 
	  adIDispatch		OLE 对象上 Idispatch 接口的指针 (DBTYPE_IDISPATCH). 
	  adInteger			4 字节的带符号整型 (DBTYPE_I4). 
	  adIUnknown		OLE 对象上 IUnknown 接口的指针 (DBTYPE_IUNKNOWN).
	  adLongVarBinary	长二进制值. 
	  adLongVarChar		长字符串值. 
	  adLongVarWChar	以空结尾的长字符串值. 
	  adNumeric			具有固定精度和范围的精确数字值 (DBTYPE_NUMERIC). 
	  adSingle			单精度浮点值 (DBTYPE_R4). 
	  adSmallInt		2 字节带符号整型 (DBTYPE_I2). 
	  adTinyInt			1 字节带符号整型 (DBTYPE_I1). 
	  adUnsignedBigInt	8 字节不带符号整型 (DBTYPE_UI8). 
	  adUnsignedInt		4 字节不带符号整型 (DBTYPE_UI4). 
	  adUnsignedSmallInt 2 字节不带符号整型 (DBTYPE_UI2). 
	  adUnsignedTinyInt 1 字节不带符号整型 (DBTYPE_UI1). 
	  adUserDefined		用户定义的变量 (DBTYPE_UDT). 
	  adVarBinary		二进制值. 
	  adVarChar			字符串值. 
	  adVariant			自动变体型 (DBTYPE_VARIANT). 
	  adVector			与其他类型一起加入逻辑 OR 中, 指示数据是 DBVECTOR 
					结构(由 OLE DB 定义).该结构含有元素的计数和其他类型 
					(DBTYPE_VECTOR) 数据的指针. 
	  adVarWChar		以空结尾的 Unicode 字符串. 
	  adWChar			以空结尾的 Unicode 字符串 (DBTYPE_WSTR). 
    ----------------------------------------------------------
	Remarks:	返回指定字段的数据类型.
==========================================================================*/
DataTypeEnum CAdoRecordSet::GetFieldType(long lIndex)
{

⌨️ 快捷键说明

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