分享关于VC 使用ADO数据库使用的方法封装类

ADO是目前还较新的访问数据库的一种方法,该类型库提供了 使用各个类型版本数据库的公共接口,从文件访问数据,网络访问数据,等等操作数据集的一些方法,

接下来分享下关于操作access数据库的方法封装类 以此为例,其他数据库访问大同小异:


#import"C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
#import"C:/Program Files/Common Files/System/ado/Msadox.dll"  rename_namespace("ADOCG") rename("EOF", "adoXEOF") rename("DataTypeEnum","adoXDataTypeEnum")  
using namespace ADOCG;
#define TESTHR(x) if FAILED(x) _com_issue_error(x);
#pragma warning (disable: 4146)
#pragma warning (default: 4146)
#include<stdio.h>
#include<iostream>
#include<fstream>
#include <string>
#include <vector>
using namespace std;


struct FIELDSINFO
{
FIELDSINFO(){
IsSetZero=true;//是否清零
IsSetPrimaryKey=false;//是否设为主键
}
string strFieldsName;//字段名
bool IsSetZero;//是否清零
bool IsSetPrimaryKey;//是否设为主键
};


class CKpAdoDatabase
{
public:
CKpAdoDatabase(void);
virtual ~CKpAdoDatabase(void);
public:
BOOL OpenMdb(LPSTR szMdbPath);//创建Connection接口 链接数据库
void OpenMdbTable(LPCSTR pszTableNmae);//打开数据库表 
void CloseTable();//关闭记录集表
void Close(); //关闭数据库连接
public:
void AddNew(LONG lnIndex=0,LPSTR Value="0");//添加记录
void SetValue(LONG lnIndex,LPCSTR Value);//修改记录
void Delete(_In_ int iIndex,_In_ int nCount = 1);
void FindData(LPCSTR pszTableNmae,LPCSTR pszWhereKey,LPCSTR pszValue,vector<LPCSTR>& vecName);//根据条件查询(SQL) 获取记录集
public:
ULONG GetrecordCount();//获取记录集的数量
ULONG GetFieldCount();//获取字段的数量
BOOL GetFieldInfo(long nIndex,string& strName);//获取字段的信息
BOOL GetFieldCollect(long nIndex,string& strName);//获取记录
void MoveNext();//游标向后
void MovePrevious();//游标向前
void MoveFirst();//头
void MoveLast();//尾
BOOL IsBOF();     //判断游标指针是否在记录头部
BOOL IsEOF();     //判断游标指针是否在记录尾部
void Update();//更新数据库
public:
BOOL IsHaveFile( LPSTR pszPath );
BOOL CreateMdb(string strMdbName);//创建ACCESS数据库 
BOOL CreateTable( string strMdbName,string strTabName,vector<FIELDSINFO*>& vecFields);//创建数据库表
BOOL IsTalbeExit(string strTable);//判断一个表在数据库中是否存在
public:
_ConnectionPtr m_pConnection;//定义ADO数据库连接指针
_RecordsetPtr m_pRecordset;//定义记录集指针
};



#include "KpAdoDatabase.h"
#include "shlwapi.h"
#include "KpString.h"


CKpAdoDatabase::CKpAdoDatabase(void)
{
::CoInitialize(NULL);//初始化数据库COM库
}


CKpAdoDatabase::~CKpAdoDatabase(void)
{
::CoUninitialize();
}
/************************************************
  函数名称:OpenMdb
  函数功能:连接数据库 (这里主要是ACCESS数据库……)
  输入参数:
szMdbPath  数据库路径
  输出参数:
   BOOL
*************************************************/
BOOL CKpAdoDatabase:: OpenMdb(LPSTR szMdbPath)
{
try{
HRESULT nRet=m_pConnection.CreateInstance(__uuidof(Connection));//创建Connection接口 实例化 m_pConnection指针
if(FAILED(nRet))return FALSE;
//构造ACCESS数据库连接字符串
char szConn[MAX_PATH]={0};
sprintf(szConn,"Provider=Microsoft.Jet.OLEDB.4.0;"//连接ACCESS数据库
"Data Source=%s;User ID=;Password=;",szMdbPath);
//构造Oracle链接字符串方式 如下
//sprintf(szConn,"Provider

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值