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

📄 dhadofield.h

📁 ADO查看数据库工具的原码
💻 H
字号:
// DHAdoField.h: interface for the CDHAdoField class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DHADOFIELD_H__ECE35252_99AD_4184_B93C_99C4A59A8F88__INCLUDED_)
#define AFX_DHADOFIELD_H__ECE35252_99AD_4184_B93C_99C4A59A8F88__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxdb.h>
#ifndef DHADO
#import "c:\program files\common files\system\ado\msado15.dll" rename("EOF","adoEOF") no_namespace
#define DHADO
#endif


class CDHAdoField  
{
public:
	
	CDHAdoField(const FieldPtr ptr);
	CDHAdoField();
	virtual ~CDHAdoField();
	const _variant_t		GetValue(); //获取字段的值
	const enum DataTypeEnum	GetType();	//获取字段类型
	//获取字段名
	inline	const	CString GetName()	const {	return	(char*)m_FieldPtr->GetName();}
	void SetNull();								//使字段为数据库值NULL	
	BOOL	operator == ( CDHAdoField& field ); //判断两个字段的值是否相等
	///////////////////////////////////////////////////////
	long GetBinaryLen();						//获取二进制字段长度
	BOOL GetBinData(void *pData);				//获取二进制字段
	BOOL SetBinData(const CLongBinary *pData);	//设置二进制数据
	BOOL SetBinData(void *pData, DWORD dwLen);
	///////////////////////////////////////////////////////
	DWORD GetDumpLength();
	DWORD DumpToMemory(void *pMem);
	BOOL DumpToFile(FILE *fp);
	///////////////////////////////////////////////////////
	//判断字段的类型
	bool	IsNull()	const	{ return (m_FieldPtr->GetType() == adEmpty || m_FieldPtr->Value.vt==VT_NULL); };
	bool	IsBool()	const	{ return m_FieldPtr->GetType() == adBoolean; };
	bool	IsChar()	const	{ return m_FieldPtr->GetType() == adChar; };
	bool	IsShort()	const	{ return ((m_FieldPtr->GetType() == adSmallInt) || (m_FieldPtr->GetType() == adUnsignedSmallInt)); };
	bool	IsInt()		const	{ return ((m_FieldPtr->GetType() == adInteger) || (m_FieldPtr->GetType() == adUnsignedInt)); };
	bool	IsLong()	const	{ return ((m_FieldPtr->GetType() == adBigInt) || (m_FieldPtr->GetType() == adUnsignedBigInt)); };
	bool	IsFloat()	const	{ return m_FieldPtr->GetType() == adSingle; };
	bool	IsDouble()	const	{ return ((m_FieldPtr->GetType() == adDouble) || (m_FieldPtr->GetType() == adNumeric)); };
	bool	IsNumber()	const	{ return IsShort() || IsLong() || IsFloat() || IsDouble(); };
	bool	IsDate()	const	{ return ((m_FieldPtr->GetType() == adDBTime) || (m_FieldPtr->GetType() == adDate) ||(m_FieldPtr->GetType() == adDBTimeStamp) || (m_FieldPtr->GetType() == adDBDate)); };
	bool	IsString()	const	{ return (m_FieldPtr->GetType() == adBSTR || m_FieldPtr->GetType() == adVarChar || m_FieldPtr->GetType() == adWChar || m_FieldPtr->GetType() == adChar || m_FieldPtr->GetType() == adVarWChar || m_FieldPtr->GetType() == adLongVarChar || m_FieldPtr->GetType() == adLongVarWChar); };
	bool	IsBinary()	const	{ return (m_FieldPtr->GetType() == adBinary || m_FieldPtr->GetType() == adVarBinary ||m_FieldPtr->GetType() == adLongVarBinary); };
	//////////////////////////////////////////////////
	//重载赋值运算
	CDHAdoField& operator =( const bool bVal );
	CDHAdoField& operator =( const unsigned char chVal );
	CDHAdoField& operator =( const short sVal );
	CDHAdoField& operator =( const int iVal );
	CDHAdoField& operator =( const long lVal );
	CDHAdoField& operator =( const DWORD lVal );
	CDHAdoField& operator =( const float fltVal );
	CDHAdoField& operator =( const double dblVal );
	CDHAdoField& operator =( const CString& cVal );
	CDHAdoField& operator =( const LPCTSTR szVal );
	CDHAdoField& operator =( const CLongBinary *szVal );
	CDHAdoField& operator =( const COleDateTime& dtVal );
	///////////////////////////////////////////////////
	//按指定类型取值
	CString AsString(); 
	short AsShort() const;
	long AsLong() const;
	int AsInt() const;
	float AsFloat() const;
	double AsDouble() const;
	COleDateTime AsDate() const;
	unsigned char AsChar() const;
	bool AsBool() const;
	CLongBinary* AsBinary();
	///////////////////////////////////////////////////
	//数据转换重载
	operator	bool() const;
	operator	unsigned char() const;
	operator	short() const;
	operator	int() const;
	operator	long() const;
	operator	float() const;
	operator	double() const;
	operator	COleDateTime() const;
	operator	CString();
	operator	CLongBinary*();
	///////////////////////////////////////////////////////
private:
	int GetDBVT() const;
	FieldPtr m_FieldPtr;
	CLongBinary m_binary;
	BOOL  operator =( const CDHAdoField& field ) {return true;};
};
////////////////////////////////////////////////////

inline	CDHAdoField::operator	bool() const {
	return	AsBool();
}
inline	CDHAdoField::operator	unsigned char() const {
	return	AsChar();
}
inline	CDHAdoField::operator	short() const {
	return	AsShort();
}
inline	CDHAdoField::operator	int() const {
	return	AsInt();
}
inline	CDHAdoField::operator	long() const {
	return	AsLong();
}
inline	CDHAdoField::operator	float() const {
	return	AsFloat();
}
inline	CDHAdoField::operator	double() const {
	return	AsDouble();
}
inline	CDHAdoField::operator	COleDateTime() const {
	return	AsDate();
}
inline	CDHAdoField::operator	CString()  {
	return	AsString();
}
inline	CDHAdoField::operator	CLongBinary*() {
	return AsBinary();
}
#endif // !defined(AFX_DHADOFIELD_H__ECE35252_99AD_4184_B93C_99C4A59A8F88__INCLUDED_)

⌨️ 快捷键说明

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