详细介绍ADO参数相关问题

开发 后端
从ADO参数指定文件读取时存在一个错误在写文件的同时存在一个错误当前记录已被删除。应用程序所请求的操作需要一个当前记录。

ADO参数的取值依次为adInteger、adChar、adChar、adSingle,adChar;Direction参数的取值依次为adParameterIn、adParameterIn、adParameterIn、adParameterOut、adParameterOut;

对于输入ADO参数,Size的值可以根据实际数值来定,对于输出参数,最好是根据定义确定(上例中ReturnInfo参数的Size值可以取为100)。

关于获取Output的参数获取ourput参数是大家最关注的问题,同时也是最“难”的问题,因为按照书本上的写法,经常获得不了Output参数,ADO参数其实这个问题很容易解决:在调用_CommandPtr的Execute方法时,ADO参数写成cmmd->Execute(NULL, NULL, adCmdStoredProc);而不要写成RecordsetPtr rec = cmmd->Execute(NULL, NULL, adCmdStoredProc);#t#

也就是说,不取返回值(我不知道这是为什么,但是相信我,事情就是这样)。ADO参数这句执行完后,使用cmmd->Parameters->GetItem("XXXXXX")->GetValue();输出参数的名称就可以获得输出参数的值了。

以下是一个通过ADO调用存储过程的部分代码:

  1. _ParameterPtr param;  
  2. param = cmmd->CreateParameter(""/*NetType*/,adTinyInt, adParamInput,  
  3.     sizeof(BYTE),(BYTE)(m_nNetType+1));  
  4. cmmd->Parameters->Append(param);  
  5. param = cmmd->CreateParameter(""/*Name*/,adVarChar, adParamInput,  
  6.    m_strName.GetLength()+1, _variant_t(m_strName));  
  7. cmmd->Parameters->Append(param);  
  8. param = cmmd->CreateParameter(""/*Desp*/,adVarChar, adParamInput,  
  9.    m_strDesp.GetLength()+1, _variant_t(m_strDesp));  
  10. cmmd->Parameters->Append(param);  
  11. param = cmmd->CreateParameter("NewNetID"/*NetID*/,adInteger, adParamOutput,  
  12.    sizeof(long), (long)m_nNewNetID);//返回参数,返回新建的网络的ID  
  13. cmmd->Parameters->Append(param);  
  14.    cmmd->CommandText=_bstr_t("GSDT_NewNet");//存储过程的名称  
  15. cmmd->ActiveConnection = m_pConPtr;//需要使用的ADO连接  
  16. cmmd->CommandType=adCmdStoredProc;  
  17. //注意下面的一行代码,如果你写成这样,就获得不了返回参数的值  
  18. //_RecordsetPtr rec = cmmd->Execute(NULL, NULL, adCmdStoredProc);  
  19. //我不知道这是为什么,但事实就是这样:)  
  20. cmmd->Execute(NULL, NULL, adCmdStoredProc);  
  21. m_nNewNetID=(long)cmmd->Parameters->GetItem("NewNetID")->GetValue();//通过参数返回值  
  22. cmmd.Detach();   
  23. ActiveX Data Objects (ADO) enables you to write a client application to access and manipulate data in a database server through a provider.  
  24. ADO's primary benefits are ease of use, high speed, low memory overhead, and a small disk footprint.  
  25. This sample project is for ADODB, an implementation of ADO optimized for use with Microsoft OLE DB providers, including the Microsoft ODBC provider for OLE DB.  
  26. Using this we can execute stored procedure, pass arguments and retrieve value. To use this sample you will have to create the two stored procedures mentioned below.  
  27. For using this project you need MFC 5.0 OR above + ADO in your machine.  
责任编辑:chenqingxiang 来源: JavaEye博客
相关推荐

2010-01-05 09:36:40

ADO超时

2010-01-04 14:54:08

ADO参数

2010-01-04 14:18:02

ADO Command

2009-12-25 16:56:36

ADO.NET建立连接

2009-12-31 14:28:09

ADO.NET参数

2009-12-22 15:44:47

ADO.NET菜单

2009-12-28 13:53:01

ADO.NET记录集

2009-12-22 15:33:33

ADO.NET参数

2009-12-28 15:00:21

ADO操作

2009-12-24 16:46:42

ADO Connect

2009-12-24 15:04:40

ADO管理

2009-12-24 15:34:44

ADO步骤

2009-12-24 14:54:25

ADO.NET使用

2009-11-11 10:27:22

ADO.NET入门

2010-01-04 14:11:51

ADO.Records

2009-12-25 14:23:35

ADO.NET设置

2010-01-05 11:19:36

ADO.NETConn

2009-12-30 10:32:04

扩展ADO.NET

2009-12-22 15:20:25

ADO.NET功能

2009-12-22 15:08:46

ADO控件
点赞
收藏

51CTO技术栈公众号