OLE DB 打开会话 Prepare()错误 会是什么原因?

afterruins 2010-03-05 02:06:11
bool CJoyDbCommand::Create(const ATL::CSession& sess, PCWSTR wszCommand)
{
m_commandText = wszCommand;

HRESULT hr;
//创建一个命令会话
hr = __super::Create(sess, wszCommand);
if(FAILED(hr))
{
JOY_LOG_DB("failed create command <%s>.", (PCSTR)GetCommandTextA());
return false;
}
//准备,Prepare中有一个默认值为0的参数,表示执行次数
hr = __super::Prepare();
......
......
}

class CJoyDbCommand : public
CCommand<CDynamicParameterAccessor, CRowset, CMultipleResults>
{........
我不太会用ole db 望大大们赐教
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
afterruins 2010-03-06
  • 打赏
  • 举报
回复
解决方法:
http://support.microsoft.com/kb/235053/zh-cn
/* -------------- Adding this code prevents the error:
ULONG ulOrds[]={1};
DBPARAMBINDINFO ParamInfo[1];

ParamInfo[0].pwszDataSourceType = (unsigned short *) L"DBTYPE_I4";
ParamInfo[0].bPrecision = 10;
ParamInfo[0].bScale = 0;
ParamInfo[0].dwFlags = DBPARAMFLAGS_ISINPUT;
ParamInfo[0].pwszName = NULL;

ParamInfo[0].ulParamSize = sizeof(LONG);

hr = SetParameterInfo(1, ulOrds, ParamInfo);
----------------*/
hr = Prepare(); //// hr = E_FAIL without SetParameterInfo call
if (E_FAIL == hr)
afterruins 2010-03-05
  • 打赏
  • 举报
回复
错误代码:E_FAIL
刚刚凉 2010-03-05
  • 打赏
  • 举报
回复
用GetLastError()看看 是什么错误

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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