C#: эквивалентность типа данных Oracle с OracleDbType

Это - то, что я использую. (Вы получаете некоторые предупреждения компиляции, но это работает и в Средстве моделирования и в iPhone)

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
20
задан Partial 17 October 2009 в 21:45
поделиться

3 ответа

Значения перечисления OracleDbType определены в документации. Прочтите ODP for .NET Developer's Guide .

Что касается выбора между Int16, Int32 и Int64, все они должны работать. Выберите тот, который соответствует ожидаемому размеру вашей переменной .Net: Int16 для значений от -32768 до 32767, Int32 для значений от -2147483648 до 2147483647 и Int64 для значений большего размера. Похоже, есть некоторые забавы, связанные с преобразованием типов данных Ints и PL / SQL. Проверьте это сообщение в блоге Марка Уильямса .

15
ответ дан 29 November 2019 в 23:27
поделиться

Вот метод преобразования типов C # в наиболее распространенные OracleDbTypes

private static OracleDbType GetOracleDbType(object o) 
{
  if (o is string) return OracleDbType.Varchar2;
  if (o is DateTime) return OracleDbType.Date;
  if (o is Int64) return OracleDbType.Int64;
  if (o is Int32) return OracleDbType.Int32;
  if (o is Int16) return OracleDbType.Int16;
  if (o is sbyte) return OracleDbType.Byte;
  if (o is byte) return OracleDbType.Int16;    -- <== unverified
  if (o is decimal) return OracleDbType.Decimal;
  if (o is float) return OracleDbType.Single;
  if (o is double) return OracleDbType.Double;
  if (o is byte[]) return OracleDbType.Blob;

  return OracleDbType.Varchar2;
}

Кроме того, для очень больших значений символьных данных вы можете использовать OracleDbType.Clob .

24
ответ дан 29 November 2019 в 23:27
поделиться

Проверьте ссылки APC , это то, что вы ищете: сопоставление довольно простое в соответствии с названием перечисления.

Но когда вы начали заметьте, с целыми числами есть что-то непонятное. Вот мое отображение:

  • Int16 : НОМЕР (5) .
  • Int32 : НОМЕР (10) .
  • Int64 : НОМЕР (19) .

Дело в том, что если вы вызовете GetInt64 в столбце НОМЕР (38) , вы получите исключение, даже если значение находится в правильном диапазоне ...

7
ответ дан 29 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: