次の方法で共有


.NET Framework データ プロバイダのデータ型から .NET Framework のデータ型への変換

ADO.NET の DataSet オブジェクトは、特定のデータ ソースには依存しません。DataSet 内のデータはデータ ソースから取得され、変更は DataAdapter によってデータ ソースに反映されます。つまり、DataAdapterDataSet 内の DataTable に、データ ソースからの値を格納すると、DataTable 内の列で結果として設定されるデータ型は、データ ソースへの接続を行う目的で使用した .NET Framework データ プロバイダ固有の型ではなく、.NET Framework のデータ型になります。

同様に、DataReader がデータ ソースから値を返す場合、結果の値は .NET Framework 型のローカル変数で格納されます。

DataAdapterFill 操作と DataReaderGet メソッドのどちらの場合も、.NET Framework の型は .NET Framework データ プロバイダから返された型から推論されます。返される値の型がわかっている場合は、DataReader の型指定されたアクセサ メソッドを使用することをお勧めします。型指定されたアクセサ メソッドを使用して .NET Framework の特定の型として値を返すと、追加の型変換が不要になるため、パフォーマンスが向上します。.NET Framework の型がアプリケーションの要求を満たしていない場合は、SqlDataReader が SQL Server 固有の型指定されたアクセサ メソッドを公開します。SQL Server 固有の型指定されたアクセサ メソッドは System.Data.SqlType のオブジェクトを返します。

Microsoft SQL Server、OLE DB、および ODBC のデータ型から推論される .NET Framework の型を次の表に示します。DataReader の型指定されたアクセサ メソッドも示します。

メモ   .NET Framework データ プロバイダのデータ型の null 値は、DBNull.Value で表現されます。

.NET Framework Data Provider for SQL Server

SQL Server 型 .NET Framework 型 .NET Framework の型指定されたアクセサ SqlType の型指定されたアクセサ
bigint Int64 GetInt64() GetSqlInt64()
binary Byte[] GetBytes() GetSqlBinary()
bit Boolean GetBoolean() GetSqlBit()
char String

Char[]

GetString()

GetChars()

GetSqlString()
datetime DateTime GetDateTime() GetSqlDateTime()
decimal Decimal GetDecimal() GetSqlDecimal()
float Double GetDouble() GetSqlDouble()
image Byte[] GetBytes() GetSqlBinary()
int Int32 GetInt32() GetSqlInt32()
money Decimal GetDecimal() GetSqlMoney()
nChar String

Char[]

GetString()

GetChars()

GetSqlString()
ntext String

Char[]

GetString()

GetChars()

GetSqlString()
numeric Decimal GetDecimal() GetSqlDecimal()
nvarchar String

Char[]

GetString()

GetChars()

GetSqlString()
real Single GetFloat() GetSqlSingle()
smalldatetime DateTime GetDateTime() GetSqlDateTime()
smallint Int16 GetInt16() GetSqlInt16()
smallmoney Decimal GetDecimal() GetSqlDecimal()
sql_variant Object* GetValue() * GetSqlValue() *
text String

Char[]

GetString()

GetChars()

GetSqlString()
timestamp Byte[] GetBytes() GetSqlBinary()
tinyint Byte GetByte() GetSqlByte()
uniqueidentifier Guid GetGuid() GetSqlGuid()
varbinary Byte[] GetBytes() GetSqlBinary()
varchar String

Char[]

GetString()

GetChars()

GetSqlString()

* sql_variant の基になる型がわかっている場合は、特定の型指定されたアクセサを使用することをお勧めします。

.NET Framework Data Provider for OLE DB

ADO 型 OLE DB 型 .NET Framework 型 .NET Framework の型指定されたアクセサ
adBigInt DBTYPE_I8 Int64 GetInt64()
adBinary DBTYPE_BYTES Byte[] GetBytes()
adBoolean DBTYPE_BOOL Boolean GetBoolean()
adBSTR DBTYPE_BSTR String GetString()
adChapter DBTYPE_HCHAPTER DataReader によってサポートされます。「DataReader によるデータの取得」を参照してください。 GetValue()
adChar DBTYPE_STR String GetString()
adCurrency DBTYPE_CY Decimal GetDecimal()
adDate DBTYPE_DATE DateTime GetDateTime()
adDBDate DBTYPE_DBDATE DateTime GetDateTime()
adDBTime DBTYPE_DBTIME DateTime GetDateTime()
adDBTimeStamp DBTYPE_DBTIMESTAMP DateTime GetDateTime()
adDecimal DBTYPE_DECIMAL Decimal GetDecimal()
adDouble DBTYPE_R8 Double GetDouble()
adError DBTYPE_ERROR ExternalException GetValue()
adFileTime DBTYPE_FILETIME DateTime GetDateTime()
adGUID DBTYPE_GUID Guid GetGuid()
adIDispatch DBTYPE_IDISPATCH * Object GetValue()
adInteger DBTYPE_I4 Int32 GetInt32()
adIUnknown DBTYPE_IUNKNOWN * Object GetValue()
adNumeric DBTYPE_NUMERIC Decimal GetDecimal()
adPropVariant DBTYPE_PROPVARIANT Object GetValue()
adSingle DBTYPE_R4 Single GetFloat()
adSmallInt DBTYPE_I2 Int16 GetInt16()
adTinyInt DBTYPE_I1 Byte GetByte()
adUnsignedBigInt DBTYPE_UI8 UInt64 GetValue()
adUnsignedInt DBTYPE_UI4 UInt32 GetValue()
adUnsignedSmallInt DBTYPE_UI2 UInt16 GetValue()
adUnsignedTinyInt DBTYPE_UI1 Byte GetByte()
adVariant DBTYPE_VARIANT Object GetValue()
adWChar DBTYPE_WSTR String GetString()
adUserDefined DBTYPE_UDT サポートされていません。    
adVarNumeric DBTYPE_VARNUMERIC サポートされていません。    

* OLE DB の DBTYPE_IUNKNOWN 型および DBTYPE_IDISPATCH 型の場合、オブジェクト参照はポインタのマーシャリングされた表現 (プロセスの境界を越えて使用するために、カプセル化された形) です。

.NET Framework Data Provider for ODBC

ODBC 型 .NET Framework 型 .NET Framework の型指定されたアクセサ
SQL_BIGINT Int64 GetInt64()
SQL_BINARY Byte[] GetBytes()
SQL_BIT Boolean GetBoolean()
SQL_CHAR String

Char[]

GetString()

GetChars()

SQL_DECIMAL Decimal GetDecimal()
SQL_DOUBLE Double GetDouble()
SQL_GUID Guid GetGuid()
SQL_INTEGER Int32 GetInt32()
SQL_LONG_VARCHAR String

Char[]

GetString()

GetChars()

SQL_LONGVARBINARY Byte[] GetBytes()
SQL_NUMERIC Decimal GetDecimal()
SQL_REAL Single GetFloat()
SQL_SMALLINT Int16 GetInt16()
SQL_TINYINT Byte GetByte()
SQL_TYPE_TIMES DateTime GetDateTime()
SQL_TYPE_TIMESTAMP DateTime GetDateTime()
SQL_VARBINARY Byte[] GetBytes()
SQL_WCHAR String

Char[]

GetString()

GetChars()

SQL_WLONGVARCHAR String

Char[]

GetString()

GetChars()

SQL_WVARCHAR String

Char[]

GetString()

GetChars()

.NET Framework Data Provider for Oracle

Oracle 型 .NET Framework 型 .NET Framework の型指定されたアクセサ OracleType の型指定されたアクセサ
BFILE Byte[] GetBytes() GetOracleBFile()
BLOB Byte[] GetBytes() GetOracleLob()
CHAR String

Char[]

GetString()

GetChars()

GetOracleString()
CLOB String

Char[]

GetString()

GetChars()

GetOracleLob()
DATE DateTime GetDateTime() GetOracleDateTime()
FLOAT Decimal GetDecimal() GetOracleNumber() **
INTEGER Decimal GetDecimal() GetOracleNumber() **
INTERVAL YEAR TO MONTH * Int32 GetInt32() GetOracleMonthSpan()
INTERVAL DAY TO SECOND * TimeSpan GetTimeSpan() GetOracleTimeSpan()
LONG String

Char[]

GetString()

GetChars()

GetOracleString()
LONG RAW Byte[] GetBytes() GetOracleBinary()
NCHAR String

Char[]

GetString()

GetChars()

GetOracleString()
NCLOB String

Char[]

GetString()

GetChars()

GetOracleLob()
NUMBER Decimal GetDecimal() GetOracleNumber() **
NVARCHAR2 String

Char[]

GetString()

GetChars()

GetOracleString()
RAW Byte[] GetBytes() GetOracleBinary()
REF CURSOR            
ROWID String

Char[]

GetString()

GetChars()

GetOracleString()
TIMESTAMP * DateTime GetDateTime() GetOracleDateTime()
TIMESTAMP WITH LOCAL TIME ZONE * DateTime GetDateTime() GetOracleDateTime()
TIMESTAMP WITH TIME ZONE * DateTime GetDateTime() GetOracleDateTime()
UNSIGNED INTEGER Decimal GetDecimal() GetOracleNumber() **
VARCHAR2 String

Char[]

GetString()

GetChars()

GetOracleString()

* この Oracle 型は、Oracle 9i クライアント ソフトウェアとサーバー ソフトウェアの両方を使用している場合だけ使用できます。

** Oracle の NUMBER 型の有効桁数は 38 桁です。.NET Framework の decimal 型は 28 桁に制限されています。Oracle の NUMBER 型を .NET Framework の decimal 型に読み込む場合、28 桁を超える NUMBER 型の値では OverflowException がスローされます。OracleDataReader から Oracle の NUMBER 型の値を読み込む場合は、GetOracleNumber の型指定されたアクセサ メソッドを呼び出し、OracleNumber として Oracle の NUMBER 型の値を返すことをお勧めします。DataSet にデータを読む込む場合は、FillError イベントを使用して、OverflowException が発生したかどうかを確認し、適切な対応をすることができます。FillError イベントの詳細については、「DataAdapter イベントの使用」を参照してください。

参照

DataAdapter からの DataSet の読み込み