VC ADO调用存储过程.docxVIP

  • 2
  • 0
  • 约5.22千字
  • 约 6页
  • 2017-12-20 发布于河南
  • 举报
VC ADO调用存储过程

VC ADO调用存储过程关于ADO调用存储过程的标准的做法:按照以下步骤进行: 1、生成并初始化一个_CommandPtr对象; 2、生成调用存储过程需要的参数,这些参数都是_ParameterPtr对象; 3、按照顺序将使用_CommandPtr的Append方法为存储过程提供参数(包括输入参数和输出参数); 4、为_CommandPtr对象指定需要使用的ADO连接等; 5、使用_CommandPtr的Execute方法调用存储过程; 6、从结果中获取返回参数的值(如果有的话)。具体的过程详见代码。 附加说明:关于CreateParameter函数,该函数的原型为:CreateParameter (Name, Type, Direction, Size, Value);其中:Name是参数的名称,可以指定也可以不指定;Type是一个DataTypeEnum值,指定参数的类别,取值有adInteger(整型)、adChar(字符/字符串型)等;Direction是一个ParameterDirectionEnum值,其取值为adParamInput、adParamInputOutput、adParamOutput、adParamReturnValue、adParamUnknown;Size是一个Long类型的值,指示该参数值以字节计算的最大长度,例如对int型,该值可以取为sizeof(int),对Long型,该值可以取为sizeof(long),对字符串型,可以使用该字符串的长度;Value是一个variant类型的值,是该参数的取值。在这里需要注意的是,Type参数、Direction参数以及Size参数一定要和存储过程定义时的参数相吻合, 例如,如果有下面一个存储过程 CREATE OR REPLACE PROCEDURE SMS_Proc_Handle_All (UserID Integer, SourAddr varchar(15), DestAddr varchar(5000), AvValue OUTPUT Single, ReturnInfo OUTPUT varchar(100)  ) 则Type参数的取值依次为adInteger、adChar、adChar、adSingle,adChar; Direction参数的取值依次为adParameterIn、adParameterIn、adParameterIn、adParameterOut、adParameterOut; 对于输入参数,Size的值可以根据实际数值来定,对于输出参数,最好是根据定义确定(上例中ReturnInfo参数的Size值可以取为100)。2,关于获取Output的参数 获取ourput参数是大家最关注的问题,同时也是最“难”的问题,因为按照书本上的写法,经常获得不了Output参数,其实这个问题很容易解决:在调用_CommandPtr的Execute方法时,写成:cmmd-Execute(NULL, NULL, adCmdStoredProc);而不要写成RecordsetPtr rec = cmmd-Execute(NULL, NULL, adCmdStoredProc);也就是说,不取返回值(我不知道这是为什么,但是相信我,事情就是这样)。这句执行完后,使用:(其中XXXXXX为输出参数的名称,就可以获得输出参数的值了)。cmmd-Parameters-GetItem(XXXXXX)-GetValue();以下是一个通过ADO调用存储过程的部分代码: _CommandPtr cmmd; HRESULT hr = cmmd.CreateInstance(__uuidof(Command)); if(FAILED(hr)) { AfxMessageBox(NewNetDatabase()中创建_CommandPtr对象失败); return 0; } _ParameterPtr param; param = cmmd-CreateParameter(/*NetType*/,adTinyInt, adParamInput, sizeof(BYTE),(BYTE)(m_nNetType+1)); cmmd-Parameters-Append(param); param = cmmd-CreateParameter(/*Name*/,adVarChar, adParamInput, m_strName.GetLength()+1, _variant_t(m_strName)); cmmd-Parameters-Append(param); param = cmmd-CreateParameter(/*Desp*/,adVarChar, adPar

文档评论(0)

1亿VIP精品文档

相关文档