简单的VC++ ADO帮助类
首先看头文件
#pragma once
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF") #if !defined(AFX_ADOCONN_H__75D447E2_EABB_4A14_9762_DD826E28D19A__INCLUDED_)
#define AFX_ADOCONN_H__75D447E2_EABB_4A14_9762_DD826E28D19A__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 class CAdoConn
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; public:
CAdoConn(void);
virtual ~CAdoConn(void);
void OnInitADOConn(); // 初始化—连接数据库
_RecordsetPtr& GetRecordSet(CString bstrSQL); // 执行查询
BOOL ExecuteSQL(CString bstrSQL); // 执行SQL语句,Insert Update _variant_t
void ExitConnect();
}; #endif
下面是实现
#include "stdafx.h"
#include "AdoConn.h" CAdoConn::CAdoConn(void)
{
} CAdoConn::~CAdoConn(void)
{
} void CAdoConn::OnInitADOConn()
{
::CoInitialize(NULL); try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect = "Provider=SQLOLEDB.1; Server=(local); Database=LibraryManageSys; user id=sa;password=root;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
} _RecordsetPtr& CAdoConn::GetRecordSet(CString bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return this->m_pRecordset;
} BOOL CAdoConn::ExecuteSQL(CString bstrSQL)
{
try
{
if(m_pConnection == NULL)
OnInitADOConn();
m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);
return TRUE;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return FALSE;
}
} void CAdoConn::ExitConnect()
{
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close(); ::CoUninitialize();
}
把组件的初始化和取消初始化功能都集中在这个类中,屏蔽掉数据库使用的一些细节,当然功能很简单也就能实现各简单的增删改查,不过对于做一些小型应用来说帮助还是很大的。
简单的VC++ ADO帮助类的更多相关文章
- VC++导入导出类
一.导出类 VC++中导出类很简单,下面列出了两个等价的方法: 方法1: class __declspec(dllexport) CTest { public: int m_nValue ...
- C#反射技术的简单操作(读取和设置类的属性)
public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...
- 简单实用的PHP验证码类
一个简单实用的php验证码类,分享出来 ,供大家参考. 代码如下: <?php /** @ php 验证码类 @ http://www.jbxue.com */ Class code { var ...
- VC++中的类的内存分布(上)
0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...
- VC++中的类的内存分布(上)(通过强制转换,观察地址,以及地址里的值来判断)
0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...
- 实现一个简单的http请求工具类
OC自带的http请求用起来不直观,asihttprequest库又太大了,依赖也多,下面实现一个简单的http请求工具类 四个文件源码大致如下,还有优化空间 MYHttpRequest.h(类定义, ...
- Qt5.9一个简单的多线程实例(类QThread)(第一种方法)
Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...
- 第一天:简单工厂模式与UML类图
何为简单工厂模式: 通过专门定义一个类,来负责创建其他类的实例,这些其它类通常具有共同的父类. 简单工厂模式的UML类图: 简单工厂模式中包含的角色和相应的职责如下: ...
- 【转】Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)
本篇文章主要介绍了"Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)",主要涉及到Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)方 ...
随机推荐
- owin,webapi中将文件写入到response stream中
首先在controller项目中添加一个类: using System; using System.Collections.Generic; using System.IO; using System ...
- ajax-向服务器发送请求
ajax-向服务器发送请求 1.将请求发送到服务器,使用XMLHttpRequest对象的 open() 和 send() 方法. xmlhttp. open(method,url,async ...
- Hibernate之二级缓存
Hibernate之二级缓存 一.简介 Gaving King曾经对别人说,hibern ...
- [Maven]Maven非常详细完整的教程
请参考:http://blog.csdn.net/u012152619/article/category/6239920 第四部分已看完 另外也可参看简书:http://www.jianshu.com ...
- javascript函数原型理解
一.当引用一个对象的属性时,若该对象没有此属性,则会查找该对象的原型,若原型上存在该属性,则返回该属性. <script type="text/javascript"> ...
- [DFNews] EnCase 更新至 v7.10
有加密狗的可以注册接收邮件下载 暂时只有英文版 前几天讲课还说到,EnCase的Template倒是好,但是稍微改一下Case Template自带的Bookmark结构,那么Report就看不到了, ...
- Android Studio 修改字体
修改字体(font)大小(size) 本文引用: http://blog.csdn.net/caroline_wendy/article/details/21876727 Android St ...
- HEVC学习之二CTU, CU, CTB, CB, PB, TB
在H264标准中,编码层的核心是宏块,一个宏块大小为16X16,包含一个16X16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8X8的色度块.相对应的在HEVC中类似的结构为编码树单元(C ...
- C++设计模式-Prototype原型模式
作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式提供了一个通过已存在对象进行新对象创建的接口(Clone), Clone()实现和具体的语言相关,在C+ ...
- Python格式化字符串和转义字符
地址:http://blog.chinaunix.net/uid-20794157-id-3038417.html Python格式化字符串的替代符以及含义 符 号 说 明 ...