2013-03-27 68 views
0

我可以用这种方式检索带有SQLGetData的ntext列。ODBC,C++,从第一列中检索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,还有其他什么?

回答

0

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