Oracleデータベース(int、decimal、double、string、Guid、...)に異なるC#データ型を保存するのが好きです。誰でも使用するOracleデータ型を示す表がありますか?c#datatypes - > oracleデータ型
異なるOracleデータ型に使用するc#データ型を示す表が見つかりましたが、その逆はありません。
Oracleデータベース(int、decimal、double、string、Guid、...)に異なるC#データ型を保存するのが好きです。誰でも使用するOracleデータ型を示す表がありますか?c#datatypes - > oracleデータ型
異なるOracleデータ型に使用するc#データ型を示す表が見つかりましたが、その逆はありません。
私はこのことができますかどうかわからないんだけど、これは.NETリフレクターを使用してODP.NETアセンブリから取られた:ODP.NETは、これを使用しています(といくつかのように
internal static void InsertTableEntries()
{
s_table.Add(typeof(byte), OracleDbType.Byte);
s_table.Add(typeof(byte[]), OracleDbType.Raw);
s_table.Add(typeof(char), OracleDbType.Varchar2);
s_table.Add(typeof(char[]), OracleDbType.Varchar2);
s_table.Add(typeof(DateTime), OracleDbType.TimeStamp);
s_table.Add(typeof(short), OracleDbType.Int16);
s_table.Add(typeof(int), OracleDbType.Int32);
s_table.Add(typeof(long), OracleDbType.Int64);
s_table.Add(typeof(float), OracleDbType.Single);
s_table.Add(typeof(double), OracleDbType.Double);
s_table.Add(typeof(decimal), OracleDbType.Decimal);
s_table.Add(typeof(string), OracleDbType.Varchar2);
s_table.Add(typeof(TimeSpan), OracleDbType.IntervalDS);
s_table.Add(typeof(OracleBFile), OracleDbType.BFile);
s_table.Add(typeof(OracleBinary), OracleDbType.Raw);
s_table.Add(typeof(OracleBlob), OracleDbType.Blob);
s_table.Add(typeof(OracleClob), OracleDbType.Clob);
s_table.Add(typeof(OracleDate), OracleDbType.Date);
s_table.Add(typeof(OracleDecimal), OracleDbType.Decimal);
s_table.Add(typeof(OracleIntervalDS), OracleDbType.IntervalDS);
s_table.Add(typeof(OracleIntervalYM), OracleDbType.IntervalYM);
s_table.Add(typeof(OracleRefCursor), OracleDbType.RefCursor);
s_table.Add(typeof(OracleString), OracleDbType.Varchar2);
s_table.Add(typeof(OracleTimeStamp), OracleDbType.TimeStamp);
s_table.Add(typeof(OracleTimeStampLTZ), OracleDbType.TimeStampLTZ);
s_table.Add(typeof(OracleTimeStampTZ), OracleDbType.TimeStampTZ);
s_table.Add(typeof(OracleXmlType), OracleDbType.XmlType);
s_table.Add(typeof(OracleRef), OracleDbType.Ref);
}
内部的に見えます他のマップ)を使用してデータ型を決定します。また、NUMBERデータ型を処理するには、
internal static OracleDbType ConvertNumberToOraDbType(int precision, int scale)
{
OracleDbType @decimal = OracleDbType.Decimal;
if ((scale <= 0) && ((precision - scale) < 5))
{
return OracleDbType.Int16;
}
if ((scale <= 0) && ((precision - scale) < 10))
{
return OracleDbType.Int32;
}
if ((scale <= 0) && ((precision - scale) < 0x13))
{
return OracleDbType.Int64;
}
if ((precision < 8) && (((scale <= 0) && ((precision - scale) <= 0x26)) || ((scale > 0) && (scale <= 0x2c))))
{
return OracleDbType.Single;
}
if (precision < 0x10)
{
@decimal = OracleDbType.Double;
}
return @decimal;
}
私はSQL Serverのデータ型に関して同様の質問をしており、this answerもありますが、これには関連性があります。
はい問題は同じです。しかし、このソリューションには、データ型のOracle固有の変換は含まれていません。 – Rolf
現在、データ型に問題があります。私たちは、NUMBER(18,3)やDATEのようなデータ型のフィールドを使ってテーブルを作成しました.OracleでUDTの関連オブジェクトを作成し、vs2010 odp.netアドオンを使用してクラスを作成しました。現在、NVARCHAR2を挿入できますが、NUMBERまたはDATEの値はNULLになります。私は再びそれを繰り返さないように似たような質問を探しました。もし私がそれを質問セクションに持って行くのでなければ、どんな勧告も素晴らしいだろう。あなたの懸念をありがとう –
答えをありがとう!これは私に何を選ぶかの手がかりを与えます。 – Rolf