CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

请问大家开发ado数据库程序时,使用通用访问类吗?

楼主youthtony(代核弹的土匪)2006-03-17 23:41:21 在 VC/MFC / 数据库 提问

我发现很多语言都用这种方法,来简化编程时的难度和开发速度  
  所以,我去查询了一些资料,看到一些像"金质通用数据访问类"这样的,简化开发难度的东西  
  不知,这种类,都是自己写的,还是说有正式一点的!!  
   
  感觉每次用VC开发数据库时,类型转换和对象设置好麻烦,是不是有些成熟的开发方法我不知道  
  大家都使用什么方法简化?  
   
  请高手指明!!!!小弟感激不尽 问题点数:20、回复次数:3Top

1 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2006-03-18 16:30:17 得分 1

熟悉ADO操作过程,就简单了,通用的简单,但不见得适用自己得需求Top

2 楼jxufeng(玉龙猪)回复于 2006-03-19 22:02:23 得分 1

用不着吧,其实很简单的,和VB差不多,你可以定义一个类,加些方法和变量。  
  例如getValue(CString   fieldName),要搞清Variant变量的用法,主要是其vt类型对应的c++(或者mfc类型),如VT_NULL就是空,VT_Bool就是bool,然后全部返回为CString   ,反正不是要显示出来吗?当然根据需要把经常用的写好就行了。Top

3 楼gxning(gxning)回复于 2006-03-20 17:00:27 得分 18

//   ADOConn.h:   interface   for   the   ADOConn   class.  
  //  
  //////////////////////////////////////////////////////////////////////  
   
  //几点说明:  
  //(1)   您的环境中msado15.dll不一定在这个目录下,请按实际情况修改  
  //(2)   在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。  
  //msado15.tlh(405)   :   warning   C4146:   unary   minus   operator   applied   to   unsigned   type,   result   still   unsigned    
   
  ////////////////////////////////////////////////////////////////////////////////////////////////  
  #import   "c:\Program   Files\Common   Files\System\ado\msado15.dll"   no_namespace   rename("EOF","adoEOF")   rename("BOF","adoBOF")  
   
  #if   !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)  
  #define   AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_  
   
  #if   _MSC_VER   >   1000  
  #pragma   once  
  #endif   //   _MSC_VER   >   1000  
   
  class   ADOConn      
  {  
  //   定义变量  
  public:  
  //添加一个指向Connection对象的指针:  
  _ConnectionPtr   m_pConnection;  
  //添加一个指向Recordset对象的指针:  
  _RecordsetPtr   m_pRecordset;  
  //   定义方法  
  public:  
  ADOConn();  
  virtual   ~ADOConn();  
  //   初始化—连接数据库  
  void     OnInitADOConn();  
  //   连接数据库,供登录时测试用  
  void     TestADOConn(CString   servername,CString   username,CString   password);  
  //   执行查询  
  _RecordsetPtr&   GetRecordSet(_bstr_t   bstrSQL);  
  //   执行SQL语句,Insert   Update   _variant_t  
  BOOL   ExecuteSQL(_bstr_t   bstrSQL);  
  void   ExitConnect();  
  };  
   
  #endif   //   !defined(AFX_ADOCONN_H__AC448F02_AF26_45E4_9B2D_D7ECB8FFCFB9__INCLUDED_)  
   
   
  //   ADOConn.cpp:   implementation   of   the   ADOConn   class.  
  //  
  //////////////////////////////////////////////////////////////////////  
   
  #include   "stdafx.h"  
  #include   "ADOConn.h"  
   
  #ifdef   _DEBUG  
  #undef   THIS_FILE  
  static   char   THIS_FILE[]=__FILE__;  
  #define   new   DEBUG_NEW  
  #endif  
   
  //////////////////////////////////////////////////////////////////////  
  //   Construction/Destruction  
  //////////////////////////////////////////////////////////////////////  
   
  ADOConn::ADOConn()  
  {  
   
  }  
   
  ADOConn::~ADOConn()  
  {  
   
  }  
   
  //   初始化—连接数据库  
  void     ADOConn::OnInitADOConn()  
  {  
  //   初始化OLE/COM库环境    
  ::CoInitialize(NULL);  
       
  try  
  {  
  //   创建Connection对象  
  m_pConnection.CreateInstance("ADODB.Connection");  
  //   设置连接字符串,必须是BSTR型或者_bstr_t类型  
  _bstr_t   strConnect   =   "Provider=SQLOLEDB;   Server=192.168.0.14;Database=xjgl;   uid=sa;   pwd=sa;";  
  m_pConnection->Open(strConnect,"","",adModeUnknown);  
  }  
  //   捕捉异常  
   
  catch(_com_error   e)  
  {  
  //   显示错误信息  
  AfxMessageBox(e.Description());  
  }  
  }  
   
  //以下用于测试数据库联接  
  void   ADOConn::TestADOConn(CString   servername,CString   username,CString   password)  
  {  
  //   初始化OLE/COM库环境    
  ::CoInitialize(NULL);  
  try  
  {  
  //   创建Connection对象  
  m_pConnection.CreateInstance("ADODB.Connection");  
  //   设置连接字符串,必须是BSTR型或者_bstr_t类型  
  _bstr_t   strConnect   =   "Provider=SQLOLEDB;   Server="   +   servername +   ";Database=xjgl;   uid="   +   username +   ";   pwd="   +   password +   ";";  
   
  m_pConnection->Open(strConnect,"","",adModeUnknown);  
  }  
  //   捕捉异常  
   
  catch(_com_error   e)  
  {  
  //   显示错误信息  
  AfxMessageBox(e.Description());  
  }  
  }  
   
   
  //   执行查询  
  _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;  
  }  
   
    //   执行SQL语句,Insert   Update   _variant_t  
  BOOL   ADOConn::ExecuteSQL(_bstr_t   bstrSQL)  
  {  
  // _variant_t   RecordsAffected;  
  try  
  {  
  //   是否已经连接数据库  
  if(m_pConnection   ==   NULL)  
  OnInitADOConn();  
  //   Connection对象的Execute方法:(_bstr_t   CommandText,    
  //   VARIANT   *   RecordsAffected,   long   Options   )    
  //   其中CommandText是命令字串,通常是SQL命令。  
  //   参数RecordsAffected是操作完成后所影响的行数,    
  //   参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名  
  //   adCmdProc-存储过程;adCmdUnknown-未知  
  m_pConnection->Execute(bstrSQL,NULL,adCmdText);  
  return   true;  
  }  
  catch(_com_error   e)  
  {  
  AfxMessageBox(e.Description());  
  return   false;  
  }  
  }  
   
  void   ADOConn::ExitConnect()  
  {  
  //   关闭记录集和连接  
  if   (m_pRecordset   !=   NULL)  
  m_pRecordset->Close();  
  m_pConnection->Close();  
  //   释放环境  
  ::CoUninitialize();  
  }  
   
  Top

相关问题

  • ADO访问数据库(vc)
  • 用ado访问数据库
  • ADO访问数据库
  • ado访问数据库?
  • 用ADO技术访问数据库
  • ADO连接访问数据库问题
  • 在CB中用ADO访问数据库
  • ADO访问SQL Server数据库问题
  • ADO访问远程数据库
  • VC ADO 访问数据库问题

关键词

  • 数据库
  • ado
  • 连接
  • null
  • adoconn
  • b2
  • bstrsql
  • 通用
  • msado15
  • ecb8ffcfb

得分解答快速导航

  • 帖主:youthtony
  • oyljerry
  • jxufeng
  • gxning

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo