📄 dhadofield.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 + -