视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
VC++ADO方式访问数据库简要笔记
2020-11-09 08:11:32 责编:小采
文档


最近从电脑中翻出以前上课时所写的 ADO 方式访问数据库练习,因此也对其作个简单的笔记。呵呵,钻研的不是很深,高手轻拍~ 不过对初学者和做课程设计要使用 VC++ 访问数据库的同学还是有所帮助的。 首先来回顾下 C# 是如何访问数据库的,我在之前的博客文章

最近从电脑中翻出以前上课时所写的ADO方式访问数据库练习,因此也对其作个简单的笔记。呵呵,钻研的不是很深,高手轻拍~ 不过对初学者和做课程设计要使用VC++访问数据库的同学还是有所帮助的。

首先来回顾下C#是如何访问数据库的,我在之前的博客文章中已经写过《C# 访问数据库》,C#访问数据库无疑是非常方便的。

1.首先声明命名空间using System.Data.SqlClient;

2.使用SqlConnection类连接,SqlCommand类执行SQL命令,结果返回给SqlDataReader类或其它类。

有关SqlConnection类、SqlCommand类和SqlDataReader类的用法可以访问《C# 访问数据库》。

接下来再来看看VC++中如何用ADO方式连接数据库。

ADO (ActiveX Data Object)主要基于COM技术,它是Microsoft数据库应用程序开发的新接口,其主要的优点是易于使用、速度快、内存支出少。下面是在VC6.0下使用ADO方式来连接数据库的简要范例:

// VC++ ADO方式访问数据库
// By MoreWindows ( http://blog.csdn.net/MoreWindows )
#include 
#include 
//导入ADO库
#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF", "adoEOF")
int main()
{
	//初始化com环境
	CoInitialize(NULL); 
	_ConnectionPtr pConnect(__uuidof(Connection));
	_RecordsetPtr pRecord(__uuidof(Recordset));
	_CommandPtr pCommand(__uuidof(Command));
	//__uuidof表示取和某个标示符相关联的GUID

	try
	{
	//连接Sql server数据库
	//数据库IP地址为222.197.165.36
	//数据库名为MyTestDB 用户名sa 密码4321
	pConnect->ConnectionString = "Provider=SQLOLEDB; Server=222.197.165.36; Database=MyTestDB; uid=sa; pwd=4321;";
	pConnect->Open("", "", "", adConnectUnspecified);
	
	//执行sql命令,结果记录在_RecordsetPtr中
	//数据表t_student中有id, name, age三列
	pCommand->put_ActiveConnection(_variant_t((IDispatch *)pConnect));
	pCommand->CommandText = "select id, name from t_student where age >= 18";
	pRecord = pCommand->Execute(NULL, NULL, adCmdText);

	_variant_t vNum;
	_bstr_t bstr;
	char szName[100];

	while (!pRecord->adoEOF)
	{	
	// id
	vNum = pRecord->GetCollect("id");
	printf("%d ", (int)vNum.intVal);
	
	// name
	vNum = pRecord->GetCollect("name"); //如果列名不对会引发错误
	bstr = vNum; 
	strcpy(szName, (PCSTR)bstr);
	printf("%s\n", szName);

	// 取下一条记录
	pRecord->MoveNext();
	}
	}
	catch (_com_error err)
	{
	printf("Error! %s\n", err.ErrorMessage());
	}
	
	pRecord->Close();
	pConnect->Close();
	pCommand.Release();
	pRecord.Release();
	pConnect.Release();

	//清空COM环境
	CoUninitialize();
	return 0;
}

对代码进行下简要讲解:

//导入ADO库

#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF", "adoEOF")

这一条语句将为程序导入ADO库,在编译时会生成msado15.tlh,ado15.tli来定义ADO库。

CoInitialize()函数来初始化COM环境,与之对应CoUninitialize()来清空COM环境。

可以看出ADO方式连接数据库也是在导入ADO库后主要使用_ConnectionPtr、_CommandPtr和_RecordsetPtr来完成访问数据库的。和前面C#访问数据库的步骤非常相似。

更多ADO方式连接数据库的例子可以参考下面的文章:

1.http://www.vckbase.com/index.php/wv/311

2.http://www.vckbase.com/index.php/wv/118

http://blog.csdn.net/morewindows/article/details/8266682

欢迎关注微博:http://weibo.com/MoreWindows

下载本文
显示全文
专题