vc中ADO执行存储过程方法记录
2017-04-20 17:20
369 查看
ado执行存储过程,需要用到_CommandPtr接口。
方法如下:
可将如下代码段放在数据库初始化连接中
下边的代码段可以放在你的函数中
基本上就是这样了。需要注意的地方就是清除旧参数那里。费了不少功夫才发现要清除旧参数,否则执行结果混乱不堪,最重要的是清除旧参数时必须由后往前删除,否则删除过程比较诡异。当然代码要用try catch块包裹,以便处理COM异常。
方法如下:
可将如下代码段放在数据库初始化连接中
_CommandPtr m_pCommand; // 定义_CommandPtr接口的操作对象 m_pCommand.CreateInstance(__uuidof(Command)); // 创建实例 m_pCommand->ActiveConnection = m_pConnection; // 设置活动连接,m_pConnection是_ConnectionPtr接口对象。 m_pCommand->CommandType = adCmdStoredProc; // 标记该操作为存储过程
下边的代码段可以放在你的函数中
// 清除旧参数,否则会累加,影响再次调用,此处必须从后往前删除 for (int i = m_pCommand->Parameters->GetCount()-1; i >=0; i--) { m_pCommand->Parameters->Delete((long)i); } m_pCommand->Parameters->Release(); _ParameterPtr pParam; pParam.CreateInstance(__uuidof(Parameter)); CString strValue(_T("字符串参数")); pParam = m_pCommand->CreateParameter(_bstr_t(""/*如果需要通过参数名称检索,可以传入一个名称*/), adVarWChar, adParamInput, strValue.GetLength());// 创建一个字符串参数 pParam->Value = _variant_t(strValue); m_pCommand->Parameters->Append(pParam); // 加入到Command对象的参数集属性中 int nValue = *(int*)(_list[i].pValue.get()); pParam = m_pCommand->CreateParameter(_bstr_t(""), adInteger, adParamInput, sizeof(int)); // 创建一个int参数 pParam->Value = _variant_t(nValue); m_pCommand->Parameters->Append(pParam); // 加入到Command对象的参数集属性中 double dValue = *(double*)(_list[i].pValue.get()); pParam = m_pCommand->CreateParameter(_bstr_t(""), adDouble, adParamInput, sizeof(double)); pParam->Value = _variant_t(dValue); m_pCommand->Parameters->Append(pParam); // 加入到Command对象的参数集属性中 m_pCommand->CommandText = _bstr_t("存储过程名称"); // 存储过程名 m_pCommand->Execute(NULL, NULL, adCmdStoredProc); // 执行存储过程
基本上就是这样了。需要注意的地方就是清除旧参数那里。费了不少功夫才发现要清除旧参数,否则执行结果混乱不堪,最重要的是清除旧参数时必须由后往前删除,否则删除过程比较诡异。当然代码要用try catch块包裹,以便处理COM异常。
相关文章推荐
- VC中使用ADO调用存储过程实现方法
- VC中使用ADO调用存储过程实现方法
- VC ado调用oracle执行存储过程获取记录集
- [转]VC中使用ADO调用存储过程实现方法
- VC ado调用oracle执行存储过程获取记录集
- VC ADO调用存储过程 并获得返回值 和 记录集
- [转]VC中使用ADO调用存储过程实现方法
- 使用VC在ADO中访问存储过程的方法
- VC+ADO 连接ACCESS和SQL SERVER的方法
- ado.net执行oracle 存储过程
- Cancel 方法范例 (VC++/ADO)
- VC中使用ADO之二--调用存储过程
- vc ado调用存储过程
- vc++中调用ADO的常用方法
- VC调用存储过程的通用方法(SQLServer篇)
- VC++ 2005编译出程序在XP下执行出错的解决方法
- VC执行存储过程
- 1次插入多条记录的方法(SQL语句,在MS SQL Server 2000查询分析器中执行成功)
- 让人郁闷了好久的问题,终于解决了,之前网上也看到一些解决方法,但大多没有解决问题,所以记录下来,以供参考之用(ADO Could Not Find The Specified Provider)
- VC中使用ADO调用存储过程