C++进行sql server数据库开发

下面使用ADO进行c++数据库开发

下面的每个小标题中代码都是不完整的,可能无法编译通过,只是分析,完整的代码会放在最后。

如果有什么地方有错误,请尽管指出来,十分感谢。

1.首先先创建一个C++的项目,Win32控制台应用。不要勾选空项目。

2.在stdafx.h中引入所需头文件,以及其他声明。

#include 
#include   
#import "C:/Program Files (x86)/Common Files/System/ado/msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "FirstOfFile")

以上是包含windows的头文件,并且引入ado所需的dll文件,后面是不引用命 名空间,并且改变EOF和BOF的声明,防止冲突。

3.要成功使用ADO,需要先初始化COM,不然会出现ADO加载失败的错误,使用如下语句:

CoInitialize(NULL);
//代码
CoUninitialize();  

4.连接数据库

首先定义全局的变量:

_ConnectionPtr pConnection;//连接指针
_CommandPtr pCmd;//命令指针
_RecordsetPtr pRecord;//结果集指针

接下来就是连接数据库了

Data Source后面的是服务器的IP地址,因为是本机,所以就用了localhost;
Initial Catalog后面的是数据库的名称;
username是登陆的用户名,一般是sa,需要SQL开启混合身份验证;
password是sa的密码,

连接数据库命令:

bstr_t connectStr = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=master;User ID=sa;Password=123456";

5.执行sql语句

这里注释”执行查询”下面的一句就是主要的查询语句,
sql是要执行的sql语句,也是_bstr_t类型的,我是函数传入的。
pRecord是结果集指针,用来保存select等语句的查询结果的,至于怎么使用,这篇不讨论,还在学习中,不怎么会用。

try
{
	_variant_t vAffected;
	//执行查询
	pRecord = pConnection->Execute(sql, &vAffected, adCmdText);
	//一样不要管DBRET那个东西。
	return DBRET(1, "", pRecord);
}
catch (_com_error e)
{
	return DBRET(0, (string)e.Description());
}

6.关闭连接

这个pRecord->Close()是用来关闭结果集的,但是如果没有结果集,那么关闭会报错,虽然会被捕捉。

pConnection->Close()是关闭数据库连接的;如果没有连接数据库就关闭也会报错。

try
{
	//关闭连接和结果集
	//pRecord->Close();
	pConnection->Close();
	CoUninitialize();
	return DBRET(1, "");
}
catch (_com_error e)
{
	return DBRET(0, (string)e.Description());
}

完整代码见github:

https://github.com/Jimmy0117/cppLearning/tree/master/cpp/SQL

文章来源:
https://www.ocrosoft.com/?p=1525

你可能感兴趣的:(C/C++,mysql,c++,sql,server,ADO,数据库,连接测试)