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)