C++利用ADO连接数据库

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

广工大学城15物联网4Wisdom整理(原文档来源:)·1·C++利用ADO连接数据库关于vc6.0/VS中实现ADOSQL数据库连接的文章网上虽然很多,但大多写的很繁琐,对于我们这样的菜鸟来说,还是很希望有一篇简单化的文章的。希望跟我一样的菜鸟们学得开心!源代码下载:案例1:contact.cpp:案例2:contact1.cpp:实践过程:(1)首先,用VS2013建立一个c++项目,然后新建好一个contact.cpp文件。(2)然后复制粘贴下面的代码——运行。实例代码:#includeicrsint.h#includeiostream#includeiomanip#includestringusingnamespacestd;#importc:\programfiles\commonfiles\system\ado\msado15.dllno_namespacerename(EOF,adoEOF)voidmain(){CoInitialize(NULL);//初始化COM环境_ConnectionPtrsqlSp;//初始化指针,建立与服务器的连接HRESULThr=sqlSp.CreateInstance(_uuidof(Connection));if(FAILED(hr))//发生连接错误{cout_ConnectionPtr对象指针实例化失败!!!endl;return;}else{//初始化连接参数_bstr_tstrConnect=Driver={sqlserver};server=127.0.0.1,1433;uid=sa;pwd=1234;database=table1;;//_bstr_tstrConnect=Provider=SQLOLEDB;Server=127.0.0.1,1433;Database=PBMS;uid=sa;pwd=pp471006459;;//_bstr_tstrConnect=Provider=SQLOLEDB.1;Password=pp471006459;PersistSecurityInfo=True;UserID=sa;//InitialCatalog=PBMS;DataSource=127.0.0.1,1433;//以上这三条strConnect语句都可以用!!看自己喜好选择用吧//要注意修改用户名uid、密码pwd、数据库名database,这三个参数均是你自己sqlserver的数据库信息广工大学城15物联网4Wisdom整理(原文档来源:)·2·try{//执行连接sqlSp-Open(strConnect,,,adModeUnknown);}catch(_com_error&e){//连接失败,捕获相应的信息coute.Description()endl;}_RecordsetPtrm_pRecordset;//记录集对象指针,用来执行SQL语句并记录查询结果if(FAILED(m_pRecordset.CreateInstance(_uuidof(Recordset)))){cout记录集对象指针实例化失败!endl;return;}//charstrSQL[]=SELECT*FROMmytable;try{m_pRecordset-Open(SELECT*FROMmytable,(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic,adCmdText);//打开数据库,执行SQL语句}catch(_com_error&e)//打开数据库失败{coute.Description()endl;}try{//读取记录m_pRecordset-MoveFirst();while(!m_pRecordset-adoEOF){stringname=(char*)(_bstr_t)(m_pRecordset-Fields-GetItem(_variant_t(name))-Value);//输出相应的数据信息coutnameendl;m_pRecordset-MoveNext();}}catch(_com_error&e){coute.Description()endl;}}system(pause);}广工大学城15物联网4Wisdom整理(原文档来源:)·3·代码步骤解读第一步系统配置1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码。2.需要在ODBC中进行数据源配置,数据源选\”SQLSERVER”,登录方式使用“使用输入用户登录ID和密码的SQLSERVER验证”,并填写登录名(sa)和密码。注意一点,密码不能为空,这就意味着你的sa用户必须得有密码。否则无法通过系统本身的安全策略。测试通过就完成了配置。第二步C++与SQL连接初始化1.在你所建立的C++项目中的stdafx.h头文件中引入ADO连接文件。具体代码如下#import“c:\ProgramFiles\CommonFiles\System\ado\msado15.dll”no_namespacerename(”EOF”,“adoEOF”)rename(”BOF”,“adoBOF”)2.定义_ConnectionPtr变量后调用Connection对象的Open方法建立与服务器的连接。数据类型_ConnectionPtr实际上是由类模板_com_ptr_t得到的一个具体的实例类。_ConnectionPtr类封装了Connection对象的Idispatch接口指针及其一些必要的操作。可以通过这个指针操纵Connection对象。例如连接SQLServer数据库:代码如下://连接到MSSQLServer广工大学城15物联网4Wisdom整理(原文档来源:)·4·CoInitialize(NULL);//调用COM时(比如ADO等)必须先用CoInitialize(NULL)初始化COM_ConnectionPtrpMyConnect=NULL;//初始化指针,建立与服务器的连接HRESULThr=pMyConnect.CreateInstance(__uuidof(Connection));if(FAILED(hr)){//发生连接错误cout_ConnectionPtr对象指针实例化失败!!!endl;return;}Else{//初始化链接参数_bstr_tstrConnect=“Provider=SQLOLEDB;Server=hch;Database=mytest;uid=sa;pwd=1234;”;//Database指你系统中的数据库try//执行连接{//Open方法连接字串必须四BSTR或者_bstr_t类型pMyConnect-Open(strConnect,“”,“”,NULL);}catch(_com_error&e)//发生链接错误,捕获错误信息{MessageBox(e.Description(),“警告”,MB_OK|MB_ICONINFORMATION);}第三步简单的数据连接//定义_RecordsetPtr变量,调用它Recordset对象的Open,即可打开一个数据集//初始化过程以下是个实例_RecordsetPtrpRecordset;//记录集对象指针,用来执行SQL语句并记录查询结果if(FAILED(pRecordset.CreateInstance(__uuidof(Recordset)))){cout记录集对象指针实例化失败!endl;return;}try{//打开数据库,执行SQL语句m_pRecordset-Open(SELECT*FROMmytable,(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic,adCmdText);}广工大学城15物联网4Wisdom整理(原文档来源:)·5·catch(_com_error&e)//打开数据库失败{coute.Description()endl;}第四步执行SQL语句这里是关键,我认为只要你懂点SQL语句那么一切都会方便许多比用上面的方法简单,更有效率点。首先m_pConnection.CreateInstance(_uuidof(Connection));//初始化Connection指针m_pRecordset.CreateInstance(__uuidof(Recordset));//初始化Recordset指针CStringstrSql=”select*fromtb_goods”;//具体执行的SQL语句(查询功能)m_pRecordset=m_pConnection-Execute(_bstr_t(strSql),NULL,adCmdText);//将查询数据导入m_pRecordset数据容器至此,你的SQL语句已经执行完成了m_pRecordset内的数据就是你执行的结果。取得记录:while(!m_pRecordset-adoEOF)//遍历并读取name列的记录并输出{stringname=(char*)(_bstr_t)(m_pRecordset-Fields-GetItem(_variant_t(name))-Value);//输出相应的数据信息coutnameendl;m_pRecordset-MoveNext();//移动游标}插入记录//记得初始化指针再执行以下操作CStringstrsql;strsql.Format(”insertintotb_goods(no,name,price)values(’%d’,'%s’,%d)”,m_intNo,m_strName,m_intPrice);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);广工大学城15物联网4Wisdom整理(原文档来源:)·6·修改记录CStringstrsql;strsql.Format(”updatetb_goodssetname=’%s’,price=%dwhereno=%d“,m_strName,m_intPrice,m_intNo);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);删除记录CStringstrsql;strsql.Format(”deletefromtb_goodswhereno=‘%d’“,m_intNo);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);实例2:/*******************************************************

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功