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

📄 simpleadoclass_def.h

📁 采用VC++编写访问数据库非常麻烦
💻 H
字号:
// 下列 ifdef 块是创建使从 DLL 导出更简单的
//宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 SIMPLEADOCLASS_EXPORTS
// 符号编译的。在使用此 DLL 的
//任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 
// SIMPLEADOCLASS_API 函数视为是从此 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。

//※:使用这些数据库类之前必须初始化COM子系统,调用CoInitialize(...)
#include <oaidl.h>

#ifdef SIMPLEADOCLASS_EXPORTS
	#define SIMPLEADOCLASS_API __declspec(dllexport)
#else
	#define SIMPLEADOCLASS_API __declspec(dllimport)
	# pragma comment(lib, "SimpleAdoClass.lib")   //在项目属性中要指定库目录
#endif

class CMyAdoClass;
class CMyAdoxClass;
class SIMPLEADOCLASS_API CSimpleAdoClass
{
public:
enum FieldAttributeEnum
{
    adFldUnspecified = -1,
    adFldMayDefer = 2,
    adFldUpdatable = 4,
    adFldUnknownUpdatable = 8,
    adFldFixed = 16,
    adFldIsNullable = 32,
    adFldMayBeNull = 64,
    adFldLong = 128,
    adFldRowID = 256,
    adFldRowVersion = 512,
    adFldCacheDeferred = 4096,
    adFldIsChapter = 8192,
    adFldNegativeScale = 16384,
    adFldKeyColumn = 32768,
    adFldIsRowURL = 65536,
    adFldIsDefaultStream = 131072,
    adFldIsCollection = 262144
};

enum DataTypeEnum
{
    adEmpty = 0,
    adTinyInt = 16,
    adSmallInt = 2,
    adInteger = 3,
    adBigInt = 20,
    adUnsignedTinyInt = 17,
    adUnsignedSmallInt = 18,
    adUnsignedInt = 19,
    adUnsignedBigInt = 21,
    adSingle = 4,
    adDouble = 5,
    adCurrency = 6,
    adDecimal = 14,
    adNumeric = 131,
    adBoolean = 11,
    adError = 10,
    adUserDefined = 132,
    adVariant = 12,
    adIDispatch = 9,
    adIUnknown = 13,
    adGUID = 72,
    adDate = 7,
    adDBDate = 133,
    adDBTime = 134,
    adDBTimeStamp = 135,
    adBSTR = 8,
    adChar = 129,
    adVarChar = 200,
    adLongVarChar = 201,
    adWChar = 130,
    adVarWChar = 202,
    adLongVarWChar = 203,
    adBinary = 128,
    adVarBinary = 204,
    adLongVarBinary = 205,
    adChapter = 136,
    adFileTime = 64,
    adPropVariant = 138,
    adVarNumeric = 139,
    adArray = 8192
};

public:
	CSimpleAdoClass();
	virtual ~CSimpleAdoClass();
private:
	CMyAdoClass *pMyAdoClass;

public:
	bool ExecuteCommand(VARIANT_BOOL bStoredProcedure, VARIANT_BOOL bChangeRec);
	bool Close(void);
	bool CloseRecordset(void);
	bool Delete(void);

	bool ExecuteConnection(BSTR query, VARIANT_BOOL bChangeRec);
		//使用SQL语句修改记录,例如:
		//建立表:ExecuteConnection("CREATE TABLE HotBikes (ID INTEGER, Model VarChar(25), Manufacturer VarChar(80))", VARIANT_FALSE);
		//插入记录:insert into HotBikes (ID, Model, Manufacturer) values (?, ?, ?)";
		//修改记录:UPDATE HotBikes SET TopSpeed=170 WHERE ID=1

	bool MoveFirst();
	short get_BOF();//0----当前不是在头部   其余---当前在头部或错误
	bool get_CommandText(BSTR * newVal);
	short get_Empty();
	short get_EOF();//0----当前不是在尾部   其余---当前在尾部或错误
	bool get_Field(int FieldIndex,VARIANT *FieldValue);
	bool get_FieldCount(long * newVal);
	bool MoveLast();
	bool MoveNext();
	bool OpenRecordset(VARIANT query,bool isBatchUpdate);//获取记录集
	bool put_CommandText(BSTR newVal);
	bool put_Field(int idx, VARIANT newVal);
	bool put_StoredProc(BSTR newVal);
	bool MovePrev();
	bool Requery();
	bool ADORelease();
	bool Open(const WCHAR* ConnectStr, const WCHAR* UserName, const WCHAR* Password);
	bool GetFieldsName(long *pFieldsCount,LPWSTR** ppFieldsNameArray);//返回的名字采用CoTaskMemAlloc()
	bool GetFieldsValue(long *pFieldsCount,VARIANT** ppFieldsValue);
	bool PutFieldsValue(DWORD FieldIndexCount, long *FieldIndexArray,VARIANT* FieldsValue);// 按照需要设置指定列的值
	bool AddNewRecord(void);
	bool Update(bool isUpdateOrCancelUpdate);
	bool UpdateBatch(bool isUpdateOrCancelUpdate);
	bool GetRecordCount(LONG *pRecordCount);
	bool DatabaseIsOpen(void);
	bool RecordsetIsOpen(void);
	bool GetRecordsetAllFieldsValue(long *pRowCount,long *pFieldCount,VARIANT** ppFieldsValue);
};

class SIMPLEADOCLASS_API CSimpleAdoxClass
{
private:
	CMyAdoxClass* pMyAdoxClass;
public:

	bool GetDatabaseTables(LPCWSTR pConnectStr,long *pTableCount,LPWSTR** ppTablesNameArray);
	CSimpleAdoxClass();
	virtual ~CSimpleAdoxClass();
};

⌨️ 快捷键说明

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