【发布时间】:2011-12-07 09:17:25
【问题描述】:
我一直在使用 Row-Wise、Column-Wise 和参数绑定来尝试找到一种方法来指向非顺序缓冲区数组以用于 VARCHAR 列返回。
返回可能有 10 个字符或 8000 个字符。显然我不想分配 8000 x nRows 字节的内存,所以我一直在尝试更好的方法。
第一个明显的方法是分配一个 8000 字节长的缓冲区,然后在 SqlFetchO() 返回列长度后,为返回分配正确的大小并复制它。由于副本很昂贵,我试图避免这种情况。
我的下一个想法是发出两个 SELECT 语句。第一个是:
SELECT DATALENGTH(Description) from SpecialOffer WHERE MinQty > 0
我不确定这有多贵,但假设实际上没有从数据库中复制任何数据,并且只是读取了 2 字节长度的字段,这可能会很快吗?在执行第二个查询之前,我可以分配一个数组,其中每个成员都具有确切的长度。
在 SQL Server 中检索行之前,有什么方法可以获取准确的 VARCHAR 列长度信息?
另外,有没有办法使用指定指向缓冲区指针的指针(即 ODBC 驱动程序要求的双重取消引用)。例如,这将允许我使用 Row-Wise 绑定和指向缓冲区的指针数组(使用第二种技术)。
【问题讨论】:
标签: c++ sql-server-2008 odbc