c++利用ado访问sqlserver数据库
来源:互联网 发布:java开发必备技能 编辑:程序博客网 时间:2024/06/13 01:59
学自<vc++开发技术大全>
ADOConn.h
#pragma once#import "c:\Program Files\Common Files\System\ado\msado15.dll"no_namespace \rename("EOF", "adoEOF")rename("BOF", "adoBOF")class ADOConn{private:_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;public:ADOConn(void);~ADOConn(void);void OnInitADOConn(void);void ExitConnect(void);_RecordsetPtr GetRecordSet(_bstr_t bstrSql);bool ExecuteSQL(_bstr_t bstrSql);};ADOConn.cpp
#include "StdAfx.h"#include "ADOConn.h"ADOConn::ADOConn(void){}ADOConn::~ADOConn(void){}void ADOConn::OnInitADOConn(void){//初始化ole/com库环境::CoInitialize(NULL);try{//创建connection对象m_pConnection.CreateInstance("ADODB.Connection");//设置连接字符串_bstr_t strConnect="uid=;pwd=;Server=;Provider=SQLOLEDB;Database=;";m_pConnection->Open(strConnect, "", "", adModeUnknown);}//捕捉异常catch(_com_error e){//显示错误信息AfxMessageBox(e.Description());}}void ADOConn::ExitConnect(void){//关闭记录集和连接if (m_pRecordset != NULL)m_pRecordset->Close();m_pConnection->Close();//释放环境::CoUninitialize();}_RecordsetPtr ADOConn::GetRecordSet(_bstr_t bstrSql){try{//连接数据库,如果connection是空,则重新连接数据库if (m_pConnection == NULL)OnInitADOConn();//创建记录对象m_pRecordset.CreateInstance(__uuidof(Recordset));//取得表中的记录m_pRecordset->Open(bstrSql, m_pConnection.GetInterfacePtr(), adOpenDynamic,adLockOptimistic, adCmdText);}catch(_com_error e){AfxMessageBox(e.Description());}//返回记录集return m_pRecordset;}bool ADOConn::ExecuteSQL(_bstr_t bstrSql){_variant_t recordsAffected;try{//数据库是否已连接if (m_pConnection == NULL)OnInitADOConn();m_pConnection->Execute(bstrSql, NULL, adCmdText);return true;}catch(_com_error e){AfxMessageBox(e.Description());return false;}return false;}
list<int> nodeList;HTREEITEM hRoot;HTREEITEM hChild;ADOConn m_adoConn;m_adoConn.OnInitADOConn();CString sql("select * from tb_node where nodestatus=0 order by nodeleft asc");_RecordsetPtr m_pRecordset;m_pRecordset = m_adoConn.GetRecordSet((_bstr_t)sql);///遍历NODE node;while (m_pRecordset->adoEOF == 0){strcpy_s(node.nodeName, (char*)(_bstr_t)m_pRecordset->GetCollect("nodeName"));node.nodeLeft = m_pRecordset->GetCollect("nodeLeft");node.nodeRight = m_pRecordset->GetCollect("nodeRight");vecNode.push_back(node);//CString s(node.nodeName);//AfxMessageBox(s);m_pRecordset->MoveNext();}//断开数据库m_adoConn.ExitConnect();//建立根节点CString sTemp(vecNode[0].nodeName);hRoot = m_nodeTree.InsertItem(sTemp);vecNode[0].nodeTreeItem = hRoot;nodeList.push_back(0);while (!nodeList.empty()){//1、读取int front = nodeList.front();int childNum = (vecNode[front].nodeRight - vecNode[front].nodeLeft - 1) / 2;//2、宽度遍历int i = front + 1;while (i <= front + childNum){//插入队列CString sTemp(vecNode[i].nodeName);hChild = m_nodeTree.InsertItem(sTemp, vecNode[front].nodeTreeItem);vecNode[i].nodeTreeItem = hChild;nodeList.push_back(i);//下标跳跃i = i + 1 + (vecNode[i].nodeRight - vecNode[i].nodeLeft - 1) / 2;}//最后弹出nodeList.pop_front();}
0 0
- c++利用ado访问sqlserver数据库
- VC利用ADO访问数据库
- C++通过ADO访问SQLSERVER/ORACLE数据库
- C++通过ADO访问SQLSERVER/ORACLE数据库
- vc 利用ADO 访问sql 数据库
- 初识vb利用ADO访问数据库
- 应用程序利用ADO对象访问数据库
- VC下利用ADO访问Access数据库(Use ADO)(转载)
- SQLServer访问ADO
- linux下利用freetds 访问sqlserver数据库
- ADO读写SQlServer数据库
- ADO 操作SqlServer数据库
- 在DELPHI中利用ADO组件访问数据库的步骤
- vc利用ado进行多线程的数据库访问
- VC中利用ADO访问数据库的一个简单实例
- c++利用SqlApi访问SqlServer数据库(存储过程篇)
- ADO访问数据库整理
- ADO访问数据库大全
- ConfigurationManager API
- 在Eclipse中,删除Server(Tomcat)后无法再次添加Server
- 学习空间数据挖掘的总结
- 开关Hadoop的NameNode安全模式(Safe Mode)
- Android Manifest合并
- c++利用ado访问sqlserver数据库
- 论坛的一些相关总结(全相位和频谱细化)
- MarkdownPad2注册码
- Comments
- Linux中gedit打开包含中文内容文件乱码的问题
- 怎样自定义枚举类
- HDOJ 1027 Ignatius and the Princess II(找出第m大排列,STL,next_permutation()函数的简单使用)
- 我们如何看Java的开发环境???
- CMD格式 清理磁盘