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

これに対する「正しい」解決策があるかどうかはわかりません.SQLGetDataと同様に、TDS入力バッファからデータを読み取るSQL Serverドライバの機能にすぎません。ただし、カーソルの種類をスクロール可能に設定することで、これを回避できる場合があります。SQL Server は、カーソルを使用する場合、既定ではラージ オブジェクトを返さず、SQLGetData を呼び出すと、データベースに戻り、再フェッチされます。理想的ではありませんが、問題の解決に役立つ場合があります。

于 2013-03-28T10:19:14.020 に答える