Home >Database >Mysql Tutorial >VC++ ADO方式访问数据库简要笔记

VC++ ADO方式访问数据库简要笔记

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 15:12:131000browse

最近从电脑中翻出以前上课时所写的 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 <stdio.h>
#include <objbase.h>
//导入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;
}</objbase.h></stdio.h>

对代码进行下简要讲解:

//导入ADO

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

这一条语句将为程序导入ADO库,在编译时会生成msado15.tlhado15.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

 


 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn