Freigeben über


Zuordnen der Datentypen von .NET Framework-Datenprovidern zu .NET Framework-Datentypen

Das ADO.NET-DataSet-Objekt ist unabhängig von einer bestimmten Datenquelle. Daten in einem DataSet werden aus einer Datenquelle abgerufen, und Änderungen werden mit Hilfe eines DataAdapter-Objekts in die Datenquelle übernommen. Das bedeutet, wenn ein DataAdapter-Objekt eine DataTable in einem DataSet mit Werten aus einer Datenquelle füllt, entsprechen die Datentypen der Spalten in der DataTable .NET Framework-Datentypen und sind demnach keine speziellen Datentypen des .NET Framework-Datenproviders, der zum Herstellen der Verbindung mit der Datenquelle verwendet wird.

Wenn ein DataReader-Objekt einen Wert aus einer Datenquelle zurückgibt, wird dieser Wert entsprechend in einer lokalen Variable gespeichert, die einen .NET Framework-Datentyp aufweist.

Sowohl für die Fill-Operationen des DataAdapter als auch für die Get-Methoden des DataReader wird der .NET Framework-Datentyp von dem Datentyp hergeleitet, der vom .NET Framework-Datenprovider zurückgegeben wird. Es empfiehlt sich, die typisierten Accessormethoden des DataReaders zu verwenden, wenn Sie den Typ des zurückgegebenen Wertes kennen. Mit typisierten Accessormethoden erzielen Sie eine bessere Leistung, da ein Wert als bestimmter .NET Framwork-Typ zurückgegeben wird und somit keine weitere Typkonvertierung erforderlich ist. Das SqlDataReader-Objekt stellt SQL Server-spezifische typisierte Accessormethoden bereit, wenn ein .NET Framework-Typ nicht den Anforderungen der Anwendung entspricht. SQL Server-spezifische typisierte Accessormethoden geben Objekte mit System.Data.SqlType zurück.

In den folgenden Tabellen werden die hergeleiteten .NET Framework-Typen für Datentypen von Microsoft SQL Server, OLE DB und ODBC aufgelistet. Die typisierten Accessormethoden für den DataReader werden ebenfalls genannt.

Hinweis   Nullwerte werden für den Datentyp jedes beliebigen .NET Framework-Datenproviders mit DBNull.Value dargestellt.

.NET Framework-Datenprovider für SQL Server

SQL Server-Typ .NET Framework-Typ Typisierter .NET Framework-Accessor Typisierter SqlType-Accessor
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()

* Es empfiehlt sich, einen bestimmten typisierten Accessor zu verwenden, wenn Sie den zugrunde liegenden Typ von sql_variant kennen.

.NET Framework-Datenprovider für OLE DB

ADO-Typ OLE DB-Typ .NET Framework-Typ Typisierter .NET Framework-Accessor
adBigInt DBTYPE_I8 Int64 GetInt64()
adBinary DBTYPE_BYTES Byte[] GetBytes()
adBoolean DBTYPE_BOOL Boolean GetBoolean()
adBSTR DBTYPE_BSTR String GetString()
adChapter DBTYPE_HCHAPTER Unterstützt durch das DataReader-Objekt. Siehe Abrufen von Daten mit dem DataReader-Objekt. 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 Nicht unterstützt    
adVarNumeric DBTYPE_VARNUMERIC Nicht unterstützt    

* Für die OLE DB-Typen DBTYPE_IUNKNOWN und DBTYPE_IDISPATCH ist der Objektverweis eine gemarshallte Darstellung des Zeigers.

.NET Framework-Datenprovider für ODBC

ODBC-Typ .NET Framework-Typ Typisierter .NET Framework-Accessor
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-Datenprovider für Oracle

Oracle-Typ .NET Framework-Typ Typisierter .NET Framework-Accessor Typisierter OracleType-Accessor
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()

* Der angegebene Oracle-Typ ist nur verfügbar, wenn die Oracle 9i-Client- und Serversoftware verwendet wird.

** Der Oracle-Typ NUMBER darf aus maximal 38 signifikanten Ziffern bestehen. Der .NET Framework-Typ decimal ist auf 28 Ziffern begrenzt. Wenn der Oracle-Typ NUMBER in einen .NET Framework-Typ decimal eingelesen wird, wird bei NUMBER-Werten mit mehr als 28 Ziffern eine OverflowException ausgelöst. Wenn Sie einen Wert des Oracle-Typs NUMBER aus OracleDataReader lesen, wird empfohlen, die typisierte Accessormethode GetOracleNumber aufzurufen, um die Werte des Oracle-Typs NUMBER als OracleNumber zurückzugeben. Wenn Sie ein DataSet füllen, können Sie mit dem FillError-Ereignis feststellen, ob eine OverflowException aufgetreten ist, und eine entsprechende Aktion ausführen. Informationen zum FillError-Ereignis finden Sie unter Arbeiten mit DataAdapter-Ereignissen.

Siehe auch

Auffüllen eines DataSets mit einem DataAdapter-Objekt