用ATLOLEDB访问数据库

上传人:m**** 文档编号:500308951 上传时间:2024-01-09 格式:DOC 页数:14 大小:53.50KB
返回 下载 相关 举报
用ATLOLEDB访问数据库_第1页
第1页 / 共14页
用ATLOLEDB访问数据库_第2页
第2页 / 共14页
用ATLOLEDB访问数据库_第3页
第3页 / 共14页
用ATLOLEDB访问数据库_第4页
第4页 / 共14页
用ATLOLEDB访问数据库_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《用ATLOLEDB访问数据库》由会员分享,可在线阅读,更多相关《用ATLOLEDB访问数据库(14页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 用ATL OLEDB访问数据库在Windows系统上访问数据库,除了数据库自身带的专用访问库,如SQL Server / Sybase的DBLibrary以及Oracle的PRO*C等,其他流行的通用访问组件主要就是ODBC, JDBC,OLEDB 等几种了。其中ODBC是最早出现的通用访问组件,比较传统,在C/C+程序中使用较多。至于DAO、RDO仅为Visual BASIC服务的。ADO在OLEDB基础上做的,由于使用简单,在Visual BASIC和ASP等脚本类程序中使用较多。JDBC是JAVA语言实现的类似ODBC的数据库访问组件。OL

2、EDB是基于COM接口的,同时支持关系数据库和非关系型数据源,功能强大而复杂。主要面向C/C+群体,正是由于直接使用OLEDB的复杂性,使用者不多。而基于OLEDB的ADO由于更加高级、简单,而得到了一部分VB、WEB程序员的青睐。ATL以更加容易使用的模板类封装了OLEDB的COM接口。使用起来不比ODBC复杂多少,可以作为ODBC的一种替代访问方式。下面的代码试图在ATL基础上简单封装,以达到让访问数据库更简单的目的。#ifndef _COMMDB_H_#define _COMMDB_H_#include extern CComModule _Module;#include #includ

3、e #include /*Remarks on CCommDB: Parameter DsnProgId of OpenDataSource can be one of below: MSDASQL - for OLEDB-ODBC Bridge SQLOLEDB - for Microsoft SQL Server OraOLEDB.Oracle - for Oracle 8i, 9i, 10g, etc. Sybase.ASEOLEDBProvider - for Sybase ASE*/class CCommDBpublic :CCommDB() virtual CCommDB()BOO

4、L OpenDataSource( LPCSTR DsnProgId, LPCSTR DataSource, LPCSTR Catalog, LPCSTR UserID, LPCSTR Password)USES_CONVERSION;CDBPropSet init(DBPROPSET_DBINIT);init.AddProperty(DBPROP_INIT_DATASOURCE,A2OLE(DataSource);init.AddProperty(DBPROP_INIT_CATALOG,A2OLE(Catalog);init.AddProperty(DBPROP_AUTH_USERID,A2

5、OLE(UserID);init.AddProperty(DBPROP_AUTH_PASSWORD,A2OLE(Password);init.AddProperty(DBPROP_INIT_LCID, (long)2052);init.AddProperty(DBPROP_INIT_PROMPT, (short)4);HRESULT hr = m_DB.Open(DsnProgId, &init);if(!SUCCEEDED(hr)return FALSE;hr=m_Session.Open(m_DB);if(!SUCCEEDED(hr)return FALSE;return TRUE;BOO

6、L DisConnect()m_Session.Close(); / Do not forget to close CSession and CDataSourcem_DB.Close();return TRUE; CSession& GetSession() return m_Session; CDataSource& GetDataSource() return m_DB; private:CSession m_Session;CDataSource m_DB;template class CCommSQLpublic: CCommSQL(CSession& Session) : m_Se

7、ssion(Session) virtual CCommSQL() m_Command.Close(); public:BOOL ExecuteCommand(LPCSTR szCommand)m_Command.Close(); / Must clean rowset first.HRESULT hr=m_Command.Open(m_Session, szCommand);if(!SUCCEEDED(hr)return FALSE;return TRUE;public:template void GetValue(int nColumn, ctype *pData)m_Command.Ge

8、tValue(nColumn, pData);template void GetValue(char* szColumn, ctype *pData)m_Command.GetValue(szColumn, pData);void* GetValue(int nColumn)/ return some special types value ,such as string. DBSTATUS Status; bool bRet = m_Command.GetStatus(nColumn, &Status); if(!bRet) /the specified column is not foun

9、d. return NULL; if(Status = DBSTATUS_S_ISNULL) return NULL; else /if(Status = DBSTATUS_S_OK | Status = DBSTATUS_S_TRUNCATED) or error. return m_Command.GetValue(nColumn);void* GetValue(char* szColumn)/ return some special types value ,such as string. DBSTATUS Status; bool bRet = m_Command.GetStatus(

10、szColumn, &Status); if(!bRet) /the specified column is not found. return NULL; if(Status = DBSTATUS_S_ISNULL) return NULL; else /if(Status = DBSTATUS_S_OK | Status = DBSTATUS_S_TRUNCATED) or error. return m_Command.GetValue(szColumn);public:BOOL MoveFirst()HRESULT hr=m_Command.MoveFirst();if(!SUCCEE

11、DED(hr)|hr=DB_S_ENDOFROWSET)return FALSE;return TRUE;BOOL MoveNext()HRESULT hr=m_Command.MoveNext();if(!SUCCEEDED(hr)|hr=DB_S_ENDOFROWSET)return FALSE;return TRUE;public: BOOL GetColumnType(ULONG nColumn, DBTYPE* pType ) return m_Command.GetColumnType(nColumn, pType) ? TRUE : FALSE; ULONG GetColumnC

12、ount() return m_Command.GetColumnCount(); LPSTR GetColumnName(ULONG nColumn, LPSTR szColumn, DWORD dwBufferSize) USES_CONVERSION; LPOLESTR szOle = m_Command.GetColumnName(nColumn); if(szOle = NULL) return NULL; ATLASSERT(dwBufferSize); if(dwBufferSize = 0) return NULL; strncpy(szColumn, OLE2A(szOle), dwBufferSize-1); szColumndwBufferSize-1 = 0; return szColumn; public: BOOL GetNextResult()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号