VS2010(MFC)用ADO实现连接SQLserver服务器并实现操作(如增删改查)

2 篇文章 1 订阅

VS2010(MFC)用ADO实现连接SQLserver服务器并实现操作(如增删改查)

一、ado的引用

引用ado的文件,

#import "Debug\\msado15.dll" no_namespace rename("EOF","adoEOF") 

当然我是把文件复制到Debug文件下,方便移植,文件其实在这里:
c:\Program Files\Common Files\System\ado\msado15.dll,当然没有就去网上下,有就复制过来就ok。名字重命名了一下adoEOF。代码付于最下方。

二、写ADO最底层的类

创建一个类,基于CDatabase,当然也可以不要基类。构造函数里面打开
::CoInitialize(NULL);析构函数中
::CoUninitialize();进行释放,同时进行最基础的操作打开数据库Open,插入或更新数据库记录ExecuteSQL,获得SQL语句中的记录集GetRecorSet,(得到数据表中最大序号GetMaxNum。)
SQLHelper.h:

#pragma once
#include <string>
using std::string;

class CSQLHelper
{
public:
	CSQLHelper(void);
	~CSQLHelper(void);

	//添加一个指向Connection对象的指针:
	_ConnectionPtr m_pConnection;
	//添加一个指向Recordset对象的指针:	
	_RecordsetPtr m_pRecordset;

public:
	int Open(string strConnect);
	void Close();
	_RecordsetPtr& GetRecorSet(string sqlStr);
	int ExecuteSQL(string sqlStr);
	long GetMaxNum(string sqlStr);
private:
	int isDBConnection;
};

SQLHelper.cpp:

#include "StdAfx.h"
#include "SQLHelper.h"


CSQLHelper::CSQLHelper(void)
{
	//默认数据库连接标记为0
	isDBConnection = 0;
	::CoInitialize(NULL);
}


CSQLHelper::~CSQLHelper(void)
{
	//释放OLE
	::CoUninitialize();
}

//打开数据库连接
int CSQLHelper::Open(string strConnect)
{
	try
	{   
		// 创建Connection对象
		m_pConnection.CreateInstance("ADODB.Connection");
		// 设置连接字符串,必须是BSTR型或者_bstr_t类型
		//	_bstr_t strConnect = "Provider=SQLOLEDB;Server=.;Database=otms;uid=sa;pwd=chc;";
		m_pConnection->Open(strConnect.c_str(),"","",adModeUnknown);
		isDBConnection = 1;
		return isDBConnection;
	}
	catch(_com_error e)
	{
		isDBConnection = 0;
		string str = "打开数据库失败!-------" + e.Description();
		return isDBConnection;
	}
}

//插入或更新数据库记录
int CSQLHelper::ExecuteSQL(string sqlStr)
{
	string str = "";
	if(isDBConnection == 0)
	{	
		return 0;
	}
	try
	{
		m_pConnection->Execute(sqlStr.c_str(), NULL, adCmdText);
		return 1;
	}
	catch(_com_error e)
	{
		str = "插入或更新数据库失败!-------" + e.Description();
		return 0;
	}
}

//获得SQL语句中的记录集
_RecordsetPtr& CSQLHelper::GetRecorSet(string sqlStr)
{
	//创建记录集对象
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try
	{
		m_pRecordset->Open(sqlStr.c_str(), m_pConnection.GetInterfacePtr(),
		adOpenDynamic, adLockOptimistic, adCmdText);
		
	}
	catch(_com_error e)
	{
		string str = "获取记录集失败!------" + e.Description();
	}
	return m_pRecordset;
}

//得到数据表中最大序号
long CSQLHelper::GetMaxNum(string sqlStr)
{
	string str = "";
	int iMaxNum = 0;
	if(isDBConnection == 0)
	{	
		return 0;
	}
	try
	{
		//创建记录集对象
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		m_pRecordset->Open(sqlStr.c_str(), m_pConnection.GetInterfacePtr(),
		adOpenDynamic, adLockOptimistic, adCmdText);
		if(!m_pRecordset->adoEOF)
		{
			iMaxNum = m_pRecordset->GetCollect("MaxNum");
		}
		return iMaxNum;
	}
	catch(_com_error e)
	{
		str = "获取最大序号失败!-------" + e.Description();
		return 0;
	}
}

三、调用自己写的类

其实这里都可以结束了,所有的类都封装好了,直接调用就好了,举例一个最简单的方式,在(你创建的文件名+Dlg.cpp)文件下添加类头文件(你创建的类),然后直接在OnInitDialog的// TODO: 在此添加额外的初始化代码中添加就ok。
比如你是CSQLHelper类。

CSQLHelper conn;
_bstr_t strConnect = L"Provider=SQLOLEDB;Server=1;Database=2;uid=3;pwd=4;";//1为服务器名,2为数据库名,3为用户名,4为密码
conn.Open(strConnect);

就这么简单就连接上了。
增加,删除,修改都很简单。

string sqlStr = (sql语句)
ExecuteSQL(sqlStr);

查找就是遍历一下就行(之前在网上找如何遍历找半天找不到)。

_bstr_t vSQL = L"SELECT (sql语句)
	_RecordsetPtr m_pRecordset;
	m_pRecordset_=conn.GetRecordSet(vSQL);
	while(!conn.m_pRecordset->rsEOF)
	{
		CString No1 = m_pRecordset_Info->GetCollect("LI_No");	
		CString DBServerName1 = m_pRecordset_Info->GetCollect("LI_DBServerName");
		CString DBName1 = m_pRecordset_Info->GetCollect("LI_DBName");
	m_pRecordset2->MoveNext();
	}
	conn2.ExitConnect2();

反正大概就是这个意思我不知道表结构所以随便写了几个。当然新建一个类写操作当然是最好的。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS2010 MFC是一个非常强大的编程工具,它内置了许多数据操作的功能,包括数据库增删改查等功能。开发人员可以利用这些功能快速地开发出各种类型的数据库应用程序。 在VS2010 MFC中,数据库增删改查操作主要是通过ADO(ActiveX Data Objects)技术来实现的。ADO是一种Microsoft开发的技术,它提供了一种标准的数据访问接口,使得不同的应用程序可以统一地访问不同类型的数据库,包括SQL Server、Oracle、Access等。 在使用VS2010 MFC进行数据操作时,需要首先连接数据库,然后才能进行增删改查操作连接数据库的方法包括使用ODBC(Open Database Connectivity)数据源或者使用DSN(Data Source Name)标识符。连接成功后,就可以通过MFC提供的各种API来进行数据操作。例如,可以使用CRecordset类来进行增删改查操作,也可以使用CDatabase、CCommand、CParameter等类来进行数据库连接和数据操作。 具体来说,数据库增删改查操作分别对应着以下MFC类/方法: 1. 增加数据:使用CRecordset类的AddNew()方法和Update()方法来添加新的记录到数据库中。 2. 删除数据:使用CRecordset类的Delete()方法来删除数据库中的记录,也可以使用SQL语句中的DELETE语句来实现。 3. 修改数据:使用CRecordset类的Edit()方法和Update()方法来更新数据库中的记录,也可以使用SQL语句中的UPDATE语句来实现。 4. 查询数据:使用CRecordset类的Open()方法来查询数据库中的记录,也可以使用SQL语句中的SELECT语句来实现。 总体来说,VS2010 MFC提供了非常强大而且易于使用的数据库操作功能,通过它可以快速地开发出各种精密的数据库应用程序,为用户提供更加高效和便利的数据管理和处理服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值