如何给如下存储过程传递参数

yang747046912 2013-06-11 10:19:46

特别是里面的 binary(16) MFC 下用ado 该如何传参数
这时我写的代码

param1 = pCmd->CreateParameter("passwd",adBinary, adParamInput,16,); 求大神指点!!1
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang747046912 2013-06-13
  • 打赏
  • 举报
回复
用了 代码 还是不行啊!!!
zyq5945 2013-06-12
  • 打赏
  • 举报
回复
都是转成_variant_t变量来传递的。 binary(16) 也可以换成字符串来传递,到存储过程中再转换回来也可以。 将FieldPtr 换成param1

BOOL CADORecordset::AppendChunk(FieldPtr pField, LPVOID lpData, UINT nBytes)
{
	HRESULT hr;
	_variant_t varChunk;
	long lngOffset = 0;
	UCHAR chData;
	SAFEARRAY FAR *psa = NULL;
	SAFEARRAYBOUND rgsabound[1];

	try
	{
		//Create a safe array to store the array of BYTES 
		rgsabound[0].lLbound = 0;
		rgsabound[0].cElements = nBytes;
		psa = SafeArrayCreate(VT_UI1,1,rgsabound);

		while(lngOffset < (long)nBytes)
		{
			chData	= ((UCHAR*)lpData)[lngOffset];
			hr = SafeArrayPutElement(psa, &lngOffset, &chData);

			if(FAILED(hr))
				return FALSE;
			
			lngOffset++;
		}
		lngOffset = 0;

		//Assign the Safe array  to a variant. 
		varChunk.vt = VT_ARRAY|VT_UI1;
		varChunk.parray = psa;

		hr = pField->AppendChunk(varChunk);

		if(SUCCEEDED(hr)) return TRUE;
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
		return FALSE;
	}

	return FALSE;
}
yang747046912 2013-06-11
  • 打赏
  • 举报
回复
怎么不支持了 是支持的啊!!! 这个可以查文档
zyq5945 2013-06-11
  • 打赏
  • 举报
回复
SQLSERVER存储过程好像是不支持二进制参数的。

4,017

社区成员

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

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