admin管理员组

文章数量:1794759

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

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

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

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

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

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

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

#include <windows.h> #include <stdlib.h> #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:

github/Jimmy0117/cppLearning/tree/master/cpp/SQL

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

本文标签: 数据库开发SQLSERVER