Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In der folgenden Tabelle sind die Microsoft SQL Server-Datentypen, ihre Entsprechungen in CLR (Common Language Runtime) für SQL Server im System.Data.SqlTypes-Namespace und ihre systemeigenen CLR-Entsprechungen in Microsoft .NET Framework aufgeführt.
SQL Server-Datentyp |
Typ (in System.Data.SqlTypes oder Microsoft.SqlServer.Types) |
CLR-Datentyp (.NET Framework) |
bigint |
SqlInt64 |
Int64, Nullable<Int64> |
binary |
SqlBytes, SqlBinary |
Byte[] |
bit |
SqlBoolean |
Boolean, Nullable<Boolean> |
char |
Keiner |
Keine |
cursor |
Keiner |
Keiner |
date |
SqlDateTime |
DateTime, Nullable<DateTime> |
datetime |
SqlDateTime |
DateTime, Nullable<DateTime> |
datetime2 |
Keiner |
DateTime, Nullable<DateTime> |
DATETIMEOFFSET |
None |
DateTimeOffset, Nullable<DateTimeOffset> |
decimal |
SqlDecimal |
Decimal, Nullable<Decimal> |
float |
SqlDouble |
Double, Nullable<Double> |
geography |
SqlGeography SqlGeography ist in der zusammen mit SQL Server installierten Bibliothek Microsoft.SqlServer.Types.dll definiert und kann von der Seite SQL Server 2012 Feature Pack heruntergeladen werden. |
Keiner |
geometry |
SqlGeometry SqlGeometry ist in der zusammen mit SQL Server installierten Bibliothek Microsoft.SqlServer.Types.dll definiert und kann von der Seite SQL Server 2012 Feature Pack heruntergeladen werden. |
Keiner |
hierarchyid |
SqlHierarchyId SqlHierarchyId ist in der zusammen mit SQL Server installierten Bibliothek Microsoft.SqlServer.Types.dll definiert und kann von der Seite SQL Server 2012 Feature Pack heruntergeladen werden. |
Keiner |
image |
Keiner |
Keiner |
int |
SqlInt32 |
Int32, Nullable<Int32> |
money |
SqlMoney |
Decimal, Nullable<Decimal> |
nchar |
SqlChars, SqlString |
String, Char[] |
ntext |
Keiner |
Keine |
numeric |
SqlDecimal |
Decimal, Nullable<Decimal> |
nvarchar |
SqlChars, SqlString SQLChars bietet eine bessere Übereinstimmung für Datenübertragungen und Datenzugriff, und SQLString bietet eine bessere Übereinstimmung für die Durchführung von Zeichenfolgenvorgängen. |
String, Char[] |
nvarchar(1), nchar(1) |
SqlChars, SqlString |
Char, String, Char[], Nullable<char> |
real |
SqlSingle (der Bereich von SqlSingle ist jedoch größer als real) |
Single, Nullable<Single> |
rowversion |
Keiner |
Byte[] |
smallint |
SqlInt16 |
Int16, Nullable<Int16> |
smallmoney |
SqlMoney |
Decimal, Nullable<Decimal> |
sql_variant |
Keiner |
Object |
table |
Keine |
Keiner |
text |
Keine |
Keine |
time |
Keine |
TimeSpan, Nullable<TimeSpan> |
timestamp |
Keiner |
Keiner |
tinyint |
SqlByte |
Byte, Nullable<Byte> |
uniqueidentifier |
SqlGuid |
Guid, Nullable<Guid> |
User-defined type(UDT) |
Keine |
Dieselbe Klasse, die in derselben Assembly oder einer abhängigen Assembly an den benutzerdefinierten Typ gebunden ist. |
varbinary |
SqlBytes, SqlBinary |
Byte[] |
varbinary(1), binary(1) |
SqlBytes, SqlBinary |
byte, Byte[], Nullable<byte> |
varchar |
Keine |
Keine |
xml |
SqlXml |
Keine |
Automatische Datentypkonvertierung mit Out-Parametern
Eine CLR-Methode kann Informationen an den aufrufenden Code oder das aufrufende Programm zurückgeben, indem sie einen Eingabeparameter mit dem out-Modifizierer (Microsoft Visual C#) oder <Out()> ByRef (Microsoft Visual Basic) markiert. Wenn der Eingabeparameter ein CLR-Datentyp im System.Data.SqlTypes-Namespace ist und ein aufrufendes Programm seinen entsprechenden SQL Server-Datentyp als Eingabeparameter angibt, wird automatisch eine Typkonvertierung durchgeführt, wenn die CLR-Methode den Datentyp zurückgibt.
Beispielsweise verfügt die folgende CLR-gespeicherte Prozedur über einen Eingabeparameter von SqlInt32 und einen CLR-Datentyp, der mit out (C#) oder <Out()> ByRef (Visual Basic) markiert ist:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ … }
<Microsoft.SqlServer.Server.SqlProcedure> _
Public Shared Sub PriceSum( <Out()> ByRef value As SqlInt32)
…
End Sub
Nachdem die Assembly in der Datenbank erstellt wurde, wird die gespeicherte Prozedur in SQL Server mit dem folgenden Transact-SQL erstellt, das einen SQL Server-Datentyp von int als einen OUTPUT-Parameter angibt:
CREATE PROCEDURE PriceSum (@sum int OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum
Wenn die CLR-gespeicherte Prozedur aufgerufen wird, wird der SqlInt32-Datentyp automatisch in einen int-Datentyp konvertiert und an das aufrufende Programm zurückgegeben.
Allerdings können nicht alle CLR-Datentypen automatisch durch einen Out-Parameter in ihre entsprechenden SQL Server-Datentypen konvertiert werden. In der folgenden Tabelle werden diese Ausnahmen aufgeführt.
CLR-Datentyp (SQL Server) |
SQL Server-Datentyp |
Decimal |
smallmoney |
SqlMoney |
smallmoney |
Decimal |
money |
DateTime |
smalldatetime |
SQLDateTime |
smalldatetime |
Siehe auch
Andere Ressourcen
SQL Server-Datentypen in .NET Framework
Änderungsverlauf
Aktualisierter Inhalt |
|---|
Die SqlGeography-, SqlGeometry- und SqlHierarchyId-Typen wurden der Zuordnungstabelle hinzugefügt. |