0

テーブルTbl1(SomeName nvarchar(64))があります

OLEDB上で選択しようとしています SELECT 1 FROM Tbl1 WHERE SomeName = ?

パラメータとして3文字のUnicodeをバインドすると、次のようになります。DB_E_ERRORSINCOMMAND(0x80040E14L)「データ型nvarcharとntextは、等号演算子で互換性がありません。」

私はすでに次の入力バインディングを試しました:

1)...
    currentBind.wType         = DBTYPE_VARIANT;
    currentBind.cbMaxLen      = 20
    // where data points to valid VT_BSTR allocated by SysAllocString
...
2)...
    currentBind.wType         = DBTYPE_WSTR;
    currentBind.cbMaxLen      = 20
    // where data points to valid VT_BSTR allocated by SysAllocString
...

いずれにせよ、SQLServerはこのパラメータをntextとして扱います。助言がありますか?前もって感謝します。

4

1 に答える 1

1

迅速で汚いハック:クエリを変更します。

次のようになります。

SELECT 1 FROM Tbl1 WHERE SomeName = cast(? as nvarchar(64))

次。コードのプロファイルを作成して、SQLステートメントに関してプロバイダーが実際に何を生成するかを確認します。結果は、間違ったパラメータ入力で誰が有罪であるかという質問にいくらかの光を投げかける可能性があります。

于 2009-08-05T16:36:02.800 に答える