0

我可以用 SQLGetData 这样的方式检索 ntext 列。

retCode = SQLGetData(input_hstmt, column, SQL_C_BINARY, 
            target_ptr, NULL, &binding_ref.buffer_length);
target_ptr = new BYTE[buffer_length + 1];
retCode = SQLGetData(input_hstmt, column, SQL_C_WCHAR, 
            target_ptr, buffer_length + 1, &strlen_or_ind);

问题是还有其他列,我想绑定这些列并在之后与它们一起使用 SQLFetch。对于使用 SQLGetData,要从中检索的列数必须大于绑定列的最大数。检索数据的最正确方法是什么?例如,对列进行排序并以正确的顺序检索它们,避免使用 SQLFetch,还有其他什么?

4

1 回答 1

0

我不确定是否有“正确”的解决方案,它只是 SQL Server 驱动程序的一个功能,它可以像 SQLGetData 一样从 TDS 输入缓冲区中读取数据。但是,您可以通过将光标类型设置为可滚动来解决此问题。SQL Server 在使用游标时默认不返回大对象,并且在调用 SQLGetData 时会重新获取数据库。它并不理想,但可以帮助您解决问题。

于 2013-03-28T10:19:14.020 回答