C# 如何将oracle二进制文件(OracleDbType.Raw)转换为guid

C# 如何将oracle二进制文件(OracleDbType.Raw)转换为guid,c#,oracle,type-conversion,C#,Oracle,Type Conversion,我的代码如下: OracleCommand cmd = CreateCommand(query, connection); cmd.Parameters.Add(new OracleParameter(parameter, OracleDbType.Raw, ParameterDirection.ReturnValue)); OracleDataAdapter oda = new OracleDataAdapter(cmd); var result = cmd.ExecuteNonQuery

我的代码如下:

OracleCommand cmd = CreateCommand(query, connection);

cmd.Parameters.Add(new OracleParameter(parameter, OracleDbType.Raw, ParameterDirection.ReturnValue));

OracleDataAdapter oda = new OracleDataAdapter(cmd);
var result = cmd.ExecuteNonQuery();
var v = cmd.Parameters[parameter].Value
value =new Guid(v as byte[]);
if (result == 1)
{
    return true;
}
else
{
    return false;
}
它不能正常工作。 我认为问题在于,转换到
字节[]
的工作不正常

有人能帮我吗

我在T.S.的帮助下使其正常工作,并更正了我的代码,如下所示:

  var op = new OracleParameter(parameter, OracleDbType.Raw,32, ParameterDirection.ReturnValue);
            op.Size = 32;
            cmd.Parameters.Add(op);

多亏了T.S

您可以简单地执行以下操作:

byte[] byte = cmd.Parameters[parameter].Value;
value = new Guid(v);
GUID以字节作为构造函数:


由于
cmd.Parameters[parameter].Value
返回
OracleBinary
,请执行此操作

OracleBinary v = cmd.Parameters[parameter].Value
value = new Guid(v.Value);

你能把鼠标放在
v
上,告诉我那是什么类型的吗?上面写着二进制。仅此而已,上面写着oraclebinary。更正了GUID是如何生成的?guid(在C#中)在将它们转换为字节方面有一些“有趣”的行为,因此如何反序列化它们的解决方案部分取决于您如何序列化它们。我得到的数组长度是1(字节[1]),但它需要16(字节[16])@JoonwK是否设置参数的大小如何设置它的大小?@JoonwK在您有
新OracleParameter的地方(参数,OracleDbType.Raw,ParameterDirection.ReturnValue)
。它要么是另一个构造函数重载,要么是声明
OracleParameter p=new..
,然后执行
p.size=36
,然后添加到参数集合。@JoonwK执行此操作:
new OracleParameter(参数,OracleDbType.Raw,36,null,参数direction.ReturnValue)