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

📄 ado.h

📁 本程序是用MFC设计的通讯录。能够完成添加
💻 H
字号:
#ifndef _ADO_H_
#define _ADO_H_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000


//引入ado库
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace  rename("EOF", "adoEOF"),rename("BOF","adoBOF")

CString IntToStr(int nVal);

CString LongToStr(long lVal);
/////////////////////////////////////////////////////////////////////////////
//  CADODatabase class
class CADODatabase
{
public:
	/////////////////////////////////////////////////////////////////////////////
	// 构造和析构函数
	CADODatabase()
	{
		//初始COM库
		::CoInitialize(NULL);
			
		m_pConnection = NULL;
		m_strConnection = _T("");
		m_pConnection.CreateInstance(__uuidof(Connection));
	}
	
	~CADODatabase()
	{
		Close();
		m_pConnection.Release();
		m_pConnection = NULL;
		::CoUninitialize();
	}
	/////////////////////////////////////////////////////////////////////////////
	//打开关闭连接、判断是否打开、执行不返回记录的SQL命令
	BOOL Open(LPCTSTR lpstrConnection = _T(""));
	void Close();
	BOOL IsOpen();	
	BOOL Execute(LPCTSTR lpstrExec);

	/////////////////////////////////////////////////////////////////////////////
	// 事务处理
	long BeginTransaction() ;
	BOOL CommitTransaction();
	BOOL RollbackTransaction();
	/////////////////////////////////////////////////////////////////////////////
	//设置和获得连接串、获得连接指针、错误信息
	_ConnectionPtr GetActiveConnection() {return m_pConnection;};
	void SetConnectionString(LPCTSTR lpstrConnection)
		{m_strConnection = lpstrConnection;};
	CString GetConnectionString()
		{return m_strConnection;};
	CString GetLastError() 
		{return m_strLastError;};
protected:
	void dump_com_error(_com_error &e);

protected:
	_ConnectionPtr m_pConnection;
	CString m_strConnection;
	CString m_strLastError;
};

class CADORecordset
{
public:
	//未知、SQL语句、表、存储过程
	enum cadoOpenEnum
	{
		openUnknown = 0,
		openQuery = 1,
		openTable = 2,
		openStoredProc = 3
	};
	enum cadoPositionEnum
	{
	
		positionUnknown = -1,
		positionBOF = -2,
		positionEOF = -3
	};
	//搜索方向,对应于ADO的
	enum cadoSearchEnum
	{	
		searchForward = 1,
		searchBackward = -1
	};
	/////////////////////////////////////////////////////////////////////////////
	//构造、析构函数
	CADORecordset()
	{
		m_pRecordset = NULL;
		m_strQuery = _T("");
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		m_nSearchDirection = CADORecordset::searchForward;
	}
	//利用CADODatabase类参数初始化
	CADORecordset(CADODatabase* pAdoDatabase);	
	~CADORecordset()
	{
		Close();
		m_pRecordset.Release();
		m_pRecordset = NULL;
		m_strQuery = _T("");
	}	
	/////////////////////////////////////////////////////////////////////////////
	//打开关闭记录集
	BOOL Open(_ConnectionPtr mpdb, LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
	BOOL Open(LPCTSTR lpstrExec = _T(""), int nOption = CADORecordset::openUnknown);
	void Close();
	/////////////////////////////////////////////////////////////////////////////
	//获得记录个数,判断记录集是否打开
	DWORD GetRecordCount();
	BOOL IsOpen();
	/////////////////////////////////////////////////////////////////////////////
	//存取字段
	BOOL SetFieldValue(int nIndex, CString strValue);
	BOOL SetFieldValue(LPCTSTR lpFieldName, CString strValue);
	BOOL SetFieldValue(int nIndex, int nValue);
	BOOL SetFieldValue(LPCTSTR lpFieldName, int nValue);
	BOOL SetFieldValue(int nIndex, long lValue);
	BOOL SetFieldValue(LPCTSTR lpFieldName, long lValue);
	BOOL SetFieldValue(int nIndex, double dblValue);
	BOOL SetFieldValue(LPCTSTR lpFieldName, double dblValue);
	BOOL SetFieldValue(int nIndex, COleDateTime time);
	BOOL SetFieldValue(LPCTSTR lpFieldName, COleDateTime time);

	BOOL GetFieldValue(LPCTSTR lpFieldName, double& dbValue);
	BOOL GetFieldValue(int nIndex, double& dbValue);
	BOOL GetFieldValue(LPCTSTR lpFieldName, long& lValue);
	BOOL GetFieldValue(int nIndex, long& lValue);
	BOOL GetFieldValue(LPCTSTR lpFieldName, int& nValue);
	BOOL GetFieldValue(int nIndex, int& nValue);
	BOOL GetFieldValue(LPCTSTR lpFieldName, CString& strValue);
	BOOL GetFieldValue(int nIndex, CString& strValue);
	BOOL GetFieldValue(LPCTSTR lpFieldName, COleDateTime& time);
	BOOL GetFieldValue(int nIndex, COleDateTime& time);
	/////////////////////////////////////////////////////////////////////////////
	//更新记录集的记录
	BOOL Update();
	BOOL AddNew();
	BOOL Requery(long Options);
	BOOL Delete();
/*	
	BOOL IsFieldNull(LPCTSTR lpFieldName);
	BOOL IsFieldNull(int nIndex);
	BOOL IsFieldEmpty(LPCTSTR lpFieldName);
	BOOL IsFieldEmpty(int nIndex);	*/
	/////////////////////////////////////////////////////////////////////////////
	//判断位置
	BOOL IsEOF();
	BOOL IsBOF();
	/////////////////////////////////////////////////////////////////////////////
	//遍历记录
	BOOL MoveFirst();		
	BOOL MoveNext(); 	
	BOOL MovePrevious();		
	BOOL MoveLast(); 	
	/////////////////////////////////////////////////////////////////////////////
	//搜索记录,获得当前记录的位置序号
	BOOL Find(LPCTSTR lpFind, int nSearchDirection);
	long GetAbsolutePosition();			
/*		void SetAbsolutePosition(int nPosition)
			{m_pRecordset->PutAbsolutePosition((enum PositionEnum)nPosition);};
		*/
	/////////////////////////////////////////////////////////////////////////////
	//其他
	CString GetQuery() 
	{return m_strQuery;};
	void SetQuery(LPCSTR strQuery) 
	{m_strQuery = strQuery;};	
	/////////////////////////////////////////////////////////////////////////////
	//书签操作
	void GetBookmark();
	BOOL SetBookmark();	
	/////////////////////////////////////////////////////////////////////////////
	//错误处理
	CString GetLastError() {return m_strLastError;};
protected:
	void dump_com_error(_com_error &e);

protected:
	_ConnectionPtr m_pConnection;	
	_RecordsetPtr m_pRecordset;
	int m_nSearchDirection;
	CString m_strFind;
//	_variant_t m_varBookFind;
	_variant_t m_varBookmark;
	CString m_strLastError;	
	CString m_strQuery;
	
};

#endif

⌨️ 快捷键说明

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