我使用的Oracle数据库的排序规则与我的操作系统语言不同。我正在使用ODBC驱动程序访问数据库。当我准备一个语句(例如“select * from x where =?”)时,它涉及DB的排序规则支持的特殊非ASCII字符,我找到带有字符的数据行。当我使用sql字符串中的参数直接执行select时,找不到数据行。

有帮助吗?

解决方案

纯粹猜测我,但可能是因为你的客户端计算机没有正确写入参数的sql字符串编码。我认为如果您的客户端设置为与DB排序规则不同的区域设置,则包含发送给Oracle的select语句的字符数组将包含“不正确”的字符数组。原始时髦字符所在的字节--Oracle会将这些字符解释为您最初发送的字符以外的字符(导致无法找到该行)。

有什么理由你不能只使用参数化方法(因为它工作正常)?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top