我在使用 MSDN 的某些文档时遇到问题。我正在使用 C++(或 C,更确切地说)通过 ODBC 连接到 SQL Server 实例。请参阅本文档底部的代码示例。
请注意,示例中有一个名为 AllocParamBuffer() 的函数。该文档描述了它应该做什么,但没有提供任何进一步的帮助。有人可以给我一些指示(不是双关语),关于我如何为这种特殊情况复制这个函数的定义,或者更好的是,证明它可以完成?我遇到了真正的障碍,我在其他地方找不到任何帮助。
任何帮助将不胜感激。
感谢您的时间。
你指的是:
// Call a helper function to allocate a buffer in which to store the parameter
// value in character form. The function determines the size of the buffer from
// the SQL data type and parameter size returned by SQLDescribeParam and returns
// a pointer to the buffer and the length of the buffer.
AllocParamBuffer(DataType, ParamSize, &PtrArray[i], &BufferLenArray[i]);
所有这一切都是用 malloc 分配一些内存(因为后来的 free 调用)来存储输入参数(PtrArray[i]),然后设置缓冲区长度 BufferLenArray[i](即为 PtrArrayp[i] 分配的内存量)。
我们只是猜测它是如何计算要分配多少内存的,因为在这种情况下所需的内存量将根据 SQLDescribeParameter 返回的 DataType 和 ParamSize 而有所不同。猜测工作归结为所有参数都绑定为 SQL_C_CHAR 并且其中一些可能不是字符串列,例如,它们可能是日期。
您需要做的就是分配一些内存,将指针分配给 PtrArray[i] 并设置在 BufferLenArray[i] 中分配的数量。