Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:SQL Server
In der folgenden Tabelle sind SQL Server-Datentypen, ihre Entsprechungen in der Common Language Runtime (CLR) für SQL Server im System.Data.SqlTypes-Namespace und deren native CLR-Entsprechungen im .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 | Keine | Keine |
| Cursor | Keine | Keine |
| date | SqlDateTime |
DateTime, Nullable<DateTime> |
| datetime | SqlDateTime |
DateTime, Nullable<DateTime> |
| datetime2 | Keine |
DateTime, Nullable<DateTime> |
| datetimeoffset- | None |
DateTimeOffset, Nullable<DateTimeOffset> |
| decimal | SqlDecimal |
Decimal, Nullable<Decimal> |
| float | SqlDouble |
Double, Nullable<Double> |
| geography |
SqlGeography
1 |
Keine |
| geometry |
SqlGeometry
1 |
Keine |
| hierarchyid |
SqlHierarchyId
1 |
Keine |
| Abbildung | Keine | Keine |
| int | SqlInt32 |
Int32, Nullable<Int32> |
| money | SqlMoney |
Decimal, Nullable<Decimal> |
| nchar |
SqlChars, SqlString |
String, Char[] |
| ntext | Keine | Keine |
| numeric | SqlDecimal |
Decimal, Nullable<Decimal> |
| nvarchar |
SqlChars, SqlStringSQLChars ist eine bessere Übereinstimmung für die Datenübertragung und den Zugriff, und SQLString ist eine bessere Übereinstimmung für die Ausführung von String Vorgängen. |
String, Char[] |
| nvarchar(1), nchar(1) |
SqlChars, SqlString |
Char, String, Char[], Nullable<char> |
| real |
SqlSingle (der Bereich der SqlSingle ist jedoch größer als reale) |
Single, Nullable<Single> |
| rowversion | Keine | Byte[] |
| smallint | SqlInt16 |
Int16, Nullable<Int16> |
| smallmoney | SqlMoney |
Decimal, Nullable<Decimal> |
| sql_variant | Keine | Object |
| Tabelle | Keine | Keine |
| text | Keine | Keine |
| time | Keine |
TimeSpan, Nullable<TimeSpan> |
| timestamp | Keine | Keine |
| tinyint | SqlByte |
Byte, Nullable<Byte> |
| uniqueidentifier | SqlGuid |
Guid, Nullable<Guid> |
| Benutzerdefinierter Typ (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 |
1 Definiert in Microsoft.SqlServer.Types.dll, das mit SQL Server installiert ist und aus dem SQL Server Feature Packheruntergeladen werden kann.
Automatische Datentypkonvertierung mit Ausgabeparametern
Eine CLR-Methode kann Informationen an den aufrufenden Code oder das Programm zurückgeben, indem sie einen Eingabeparameter mit dem out Modifizierer (C#) oder <Out()> ByRef (Visual Basic .NET) markieren. Wenn der Eingabeparameter ein CLR-Datentyp im System.Data.SqlTypes-Namespace ist und das aufrufende Programm den entsprechenden SQL Server-Datentyp als Eingabeparameter angibt, tritt automatisch eine Typkonvertierung auf, wenn die CLR-Methode den Datentyp zurückgibt.
Die folgende gespeicherte CLR-Prozedur verfügt beispielsweise über einen Eingabeparameter SqlInt32 CLR-Datentyps, der mit out (C#) oder <Out()> ByRef (Visual Basic) gekennzeichnet ist:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }
Nachdem die Assembly in der Datenbank erstellt und erstellt wurde, wird die gespeicherte Prozedur in SQL Server mit dem folgenden Transact-SQL-Code erstellt, der einen SQL Server-Datentyp von int als OUTPUT-Parameter angibt:
CREATE PROCEDURE PriceSum
(@sum INT OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum;
Wenn die gespeicherte CLR-Prozedur aufgerufen wird, wird der SqlInt32 Datentyp automatisch in einen int Datentyp konvertiert und an das aufrufende Programm zurückgegeben.
Nicht alle CLR-Datentypen können über einen out Parameter automatisch 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 |