我有桌子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进行处理。 有什么建议?提前谢谢。
答案 0 :(得分:1)
快速而肮脏的黑客攻击:更改查询。
它应该是这样的:
SELECT 1 FROM Tbl1 WHERE SomeName = cast(? as nvarchar(64))
下一步。我将分析代码,以了解您的提供程序在SQL语句方面实际生成了什么。结果可以说明谁在错误的参数输入中犯了罪。