Как преобразовать двоичный код оракула (OracleDbType.Raw) в guid - PullRequest
0 голосов
/ 04 февраля 2019

Мой код читается следующим образом:

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;
}

Он не работает должным образом.Проблема, я думаю, в том, что приведение к byte[] не работает должным образом.

Кто-нибудь может мне помочь?

Я заставил его работать с помощью TS и исправил свой код, как показано ниже:

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

Благодаря TS

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Поскольку cmd.Parameters[parameter].Value возвращает OracleBinary, сделайте это

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

https://docs.oracle.com/database/121/ODPNT/OracleBinaryStructure.htm#ODPNT4417

0 голосов
/ 04 февраля 2019

Вы можете просто сделать это:

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

GUID принимает в качестве конструктора байт:

https://docs.microsoft.com/en-us/dotnet/api/system.guid.-ctor? redirectedfrom = MSDN & view = netframework-4.7.2 # System_Guid__ctor_System_Byte ___

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...