【问题标题】:ODBC Documentation ClarityODBC 文档清晰度
【发布时间】:2012-12-02 20:29:05
【问题描述】:
我在使用 MSDN 中的某个文档时遇到了问题。我正在使用 C++(或 C,更确切地说)通过 ODBC 连接到 SQL Server 实例。查看this piece of documentation底部的代码示例。
请注意,示例中有一个名为 AllocParamBuffer() 的函数。该文档描述了它应该做什么,但没有提供任何进一步的帮助。有人可以给我一些指示(不是双关语),关于我如何为这种特殊情况复制这个函数的定义,或者更好的是,证明它可以完成?我遇到了真正的障碍,我在别处找不到任何帮助。
任何帮助将不胜感激。
感谢您的宝贵时间。
【问题讨论】:
-
那是C还是C++?此外,您提供的链接指向两个更有用的链接:Support 和 Community。由于您“遇到了来自 MSDN 的某段 文档 的问题”,因此您可能会在该站点上获得好运。
-
标签:
c++
sql
c
function
odbc
【解决方案1】:
你指的是:
// 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] 中设置分配的数量。