C++ ADO 命令对象调用 MySql 的二进制类型的输出参数的存储过程时,用户必须预先提供长度信息吗?
我写一个与数据库相关的 C++ 库,目的是在用 ADO 的命令对象调用 MySql 的一个存储过程。这个存储过程有输出参数,类型为 VARBINARY。在调用存储过程之前自然要设置参数,参数的长度需要由上帝(用户)指定,上帝不爽,还拿出证据(记录集的方式不要用户指定一个长度,多方便!)。
C++ 代码见 1 楼,MySql 表及存储过程见 2 楼,备注见 3 楼。
说说我的 GetProcedure_BinaryValue 是怎么来的:我是先在网上找到了很多很多很多很多用记录集的方式的代码,就是 GetRecordSet_BinaryValue 的样子,我复制一份,将前两行
[code=C/C++]FieldPtr fpr = m_AdoRecordSet->GetFields()->GetItem(name);
long length = fpr->ActualSize;[/Code]改为:[code=C/C++]_ParameterPtr ppr = m_CommandPtr->Parameters->GetItem(_bstr_t(name));
long ExpectMaxLen = ppr->GetSize();[/Code]
把中间部分的 len 改为 ActualLen,感觉可读性好一些。然后加上了我的异常判断,嗯,就这样,大家说说有错吗?
记录集的方式的函数里面,length 和 len 的值是相同的。但是命令对象的方式,ppr->GetSize() 返回的是在添加参数时的那个长度,stream->GetSize() 返回的是字段实际的有效内容的长度。为什么呢?
GetProcedure_BinaryValue 这个函数的接口不变,你会怎么写函数体?
=============== When: 2013-04-09 Where: bbs.csdn.net Who: zjs100901 Which: 0008 ===============
==================== 以下为 CSDN 广告,与楼主发贴内容无关,如有瓜葛,纯属巧合 ====================
C++ 代码见 1 楼,MySql 表及存储过程见 2 楼,备注见 3 楼。
说说我的 GetProcedure_BinaryValue 是怎么来的:我是先在网上找到了很多很多很多很多用记录集的方式的代码,就是 GetRecordSet_BinaryValue 的样子,我复制一份,将前两行
[code=C/C++]FieldPtr fpr = m_AdoRecordSet->GetFields()->GetItem(name);
long length = fpr->ActualSize;[/Code]改为:[code=C/C++]_ParameterPtr ppr = m_CommandPtr->Parameters->GetItem(_bstr_t(name));
long ExpectMaxLen = ppr->GetSize();[/Code]
把中间部分的 len 改为 ActualLen,感觉可读性好一些。然后加上了我的异常判断,嗯,就这样,大家说说有错吗?
记录集的方式的函数里面,length 和 len 的值是相同的。但是命令对象的方式,ppr->GetSize() 返回的是在添加参数时的那个长度,stream->GetSize() 返回的是字段实际的有效内容的长度。为什么呢?
GetProcedure_BinaryValue 这个函数的接口不变,你会怎么写函数体?
=============== When: 2013-04-09 Where: bbs.csdn.net Who: zjs100901 Which: 0008 ===============
==================== 以下为 CSDN 广告,与楼主发贴内容无关,如有瓜葛,纯属巧合 ====================
...全文
相关推荐
ADO读写blob字段
VC++通过ADO向数据库Oracle插入图片等2进制数据,从数据库读取图片等数据
c#利用ado.net进行数据库开发
c#利用ado.net进行数据库开发,简单介绍
delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态
主要介绍了delphi mysql adbquery数据提供程序或其他服务返回 E_FAIL 状态的解决方法
DELPHI编程将MSSQL表、视图、存储过程转换为SQL语句..rar
DELPHI编程将MSSQL表、视图、存储过程转换为SQL语句..rar
VB6+ADO连接MYSQL数据库Mariadb数据库示例
VB6+ADO用ODBC连接MYSQL数据库Mariadb数据库示例 建数据库,建表,查询,插入数据的示例。



