【问题标题】:ODAC: nvarchar column value is truncatedODAC:nvarchar 列值被截断
【发布时间】:2013-06-13 11:23:07
【问题描述】:

我正在使用 ODAC 库版本 8.6.12 通过 Delphi 6 连接到 oracle,我有一个 nvarchar(32) 列,您可以看到它最多有 32 个字符,可以说我总是使用 32 个字符值,例如"123456789-123456789-123456789-12"

在客户 PC 上有时会出现此问题,结果将被截断为 16 个字符,因此下一个代码将显示一条包含 16 个字符的消息“123456789-123456”:

var MyID: string;
begin 
  MyID:= OraQuery.Field[0].AsString;//value must be "123456789-123456789-123456789-12"
  // -->> MyID = "123456789-123456"  only 16 characters 

为什么我会遇到这个问题? 这取决于 Oracle 版本吗?

这很奇怪,因为代码曾经在旧 ODAC 上运行,但在某些计算机上只能在新 ODAC 8.6.12 上运行 - 在我的计算机上运行正常 -!

【问题讨论】:

  • 原始字符串真的只是123456789-123456789-123456789-12 还是只是你的例子?
  • 不,这只是我的例子,但表上的值都超过 16 个字符的值:这是一个真实的例子 40E43B6B81B8D6BD-58B6AF44
  • 查看注册表中包含的 oracle 参数。 nVarchar 可能是双字节类型。因此,如果存在无法用一个字节表示的特定字符,则 Odac 或 Oracle 客户端可以将字符串转换为双字节。
  • 阿里 我已经考虑过类似的问题,但是这种问题在 ODAC 中没有解决吗?什么样的角色可能会解决这个问题?你能告诉我这些预言机参数在哪里吗?
  • 不确定是否是您的情况,但在 ODAC 9.0 中,关于 UTF-8 数据库中的 nvarchar 或之前版本的 nvarchar 的错误已得到纠正。检查这个link

标签: database oracle delphi devart odac


【解决方案1】:

我们已经修复了这个问题,修复将包含在下个月初发布的下一个 ODAC 版本中。

【讨论】:

    猜你喜欢
    • 2023-01-29
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2021-10-12
    相关资源
    最近更新 更多