【发布时间】: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