gpt4 book ai didi

c# - 将字节数组从 Oracle RAW 转换为 System.Guid?

转载 作者:可可西里 更新时间:2023-11-01 09:09:39 27 4
gpt4 key购买 nike

我的应用程序使用自定义数据访问层与 Oracle 和 SQL Server 数据库交互,使用 DataReader 以 ADO.NET 编写。现在我在 GUID(我们将其用于主键)和 Oracle RAW 数据类型之间进行转换时遇到问题。插入 oracle 很好(我只是在 System.Guid 上使用 ToByteArray() 方法)。当我从数据库加载记录时,问题是转换回 System.Guid。目前,我正在使用从 ADO.NET 获得的字节数组传递到 System.Guid 的构造函数中。这似乎有效,但出现在数据库中的 Guid 与我以这种方式生成的 Guid 不对应。

我无法更改数据库架构或查询(因为它被重新用于 SQL Server)。我需要代码将字节数组从 Oracle 转换为正确的 Guid。

最佳答案

事实证明,问题出在 Guid.ToByteArray() 中的字节顺序,而不是 Oracle 本身。如果您使用 Guid“11223344-5566-7788-9900-aabbccddeeff”并对其调用 ToByteArray(),您将获得“44332211665588779900AABBCCDDEEFF” .如果您随后将该字节数组传递回 Guid 的构造函数,您将获得原始 Guid。我的错误是试图通过原始 Guid 格式(删除破折号)而不是 ToByteArray() 调用的结果来查询 Oracle 数据库。

我仍然不知道为什么字节是这样排序的,但它显然与 Oracle 无关。

关于c# - 将字节数组从 Oracle RAW 转换为 System.Guid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com