针对ntext的OLEDB比较问题nvarchar(SQLServer 2005)

时间:2009-08-05 09:31:01

标签: sql-server oledb nvarchar ntext

我有桌子Tbl1( SomeName nvarchar(64) )

Over 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进行处理。 有什么建议?提前谢谢。

1 个答案:

答案 0 :(得分:1)

快速而肮脏的黑客攻击:更改查询。

它应该是这样的:

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

下一步。我将分析代码,以了解您的提供程序在SQL语句方面实​​际生成了什么。结果可以说明谁在错误的参数输入中犯了罪。