VC中怎么用ADO调用存储过程

whatapig 2001-09-14 11:07:54
我写了调用SP的代码,但是运行时候报"abnormal program termination"。ADO调用存储过程还要不要写些其他的东西,我看了网上有的例程,好象也就这个样子了。
我的数据库用的是SQL Server。
各位老大帮帮忙了。

源代码如下:
/////////////////////////////////////////////////////////////////////
_ConnectionPtr Conn = NULL;
_RecordsetPtr Rs = NULL;
_CommandPtr Cmd = NULL;

CoInitialize(NULL);

Conn.CreateInstance ( __uuidof(Connection));
Rs.CreateInstance (__uuidof(Recordset));
Cmd.CreateInstance (__uuidof(Command));

Conn->Open(L"db", L"sa", L"", adOpenUnspecified); //打开正常

//如下为_CommandPtr对象参数的赋值和调用
Cmd->ActiveConnection = Conn;
Cmd->CommandText = "SP_TEST";
//数据库中实际存在这个测试存储过程,select * from atable,不传递参数
Cmd->CommandType = adCmdStoredProc;
Cmd->Parameters->Refresh();
Rs = Cmd->Execute( NULL,NULL, adCmdUnknown ); //COM出错。

//注释掉的代码为直接的SQL语句提交,运行正确。
//Cmd->ActiveConnection=Conn;
//Cmd->CommandText = "select * from atable";
//Cmd->CommandType = adCmdText;
//Cmd->Parameters->Refresh();
//Rs = Cmd->Execute(NULL,NULL,adCmdUnknown);

.....
Rs->Close();
Conn->Close();

CoUninitialize();
////////////////////////////////////////////////////////
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatapig 2001-09-14
  • 打赏
  • 举报
回复
我怀疑是不是有其他什么地方需要设置的?
whatapig 2001-09-14
  • 打赏
  • 举报
回复
老大们,还是不行呀。

这样也不行:
_RecordsetPtr Rs = NULL;
...
Rs->PutRefSource(Cmd);
Rs->Open(vNull, vNull, adOpenForwardOnly, adLockReadOnly, adCmdStoredProc);
PowerDeng 2001-09-14
  • 打赏
  • 举报
回复
我靠,试试这个:

_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;

Cmd->Execute(&vNULL,&vNULL,adCmdStoredProc);
nichang 2001-09-14
  • 打赏
  • 举报
回复
是吗?
_variant_t vtEmpty
Rs = Cmd->Execute( &vtEmpty,&vtEmpty, adcmdstoredproc)
再catch一下,看出错原因
whatapig 2001-09-14
  • 打赏
  • 举报
回复
不行,老样子。
Commandtype用amCmdText的时候,这个选项也用adCmdUnknown.就可以。
nichang 2001-09-14
  • 打赏
  • 举报
回复
Rs = Cmd->Execute( NULL,NULL, adCmdstoredproc)
whatapig 2001-09-14
  • 打赏
  • 举报
回复
另外,我用Connection提交一个创建表的SQL执行正确,提交一个创建SP的SQL就报错。
反正有关sp的就没有对过。
whatapig 2001-09-14
  • 打赏
  • 举报
回复
问题是我就是这么做的。可就是不对。
acptvc 2001-09-14
  • 打赏
  • 举报
回复
感谢您使用微软产品。

请参考如下文章:
《HOWTO: Invoke a Stored Procedure with ADO Query Using VBA/C++/Java》
http://support.microsoft.com/support/kb/articles/Q185/1/25.ASP

微软亚洲技术中心 VC技术支持


本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款 (http://www.csdn.net/microsoft/terms.shtm)。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧