Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Jeśli znasz typy danych programu SQL Server, w przestrzeni nazw System.Data.SqlTypes platformy .NET Framework znajdziesz podobną semantyka i precyzję. Istnieją jednak pewne różnice, a w tym artykule opisano najważniejsze z tych różnic.
Wartości null
Podstawową różnicą między natywnymi typami danych środowiska uruchomieniowego języka wspólnego (CLR) i typami danych programu SQL Server jest to, że te pierwsze nie zezwalają na NULL wartości, podczas gdy te ostatnie zapewniają pełne NULL semantyki.
Na porównania mają wpływ wartości NULL. Podczas porównywania dwóch wartości x i y, jeśli x lub y jest NULL, niektóre porównania logiczne obliczają wartość UNKNOWN zamiast wartości true lub false.
Typ danych SqlBoolean
Przestrzeń nazw System.Data.SqlTypes wprowadza typ SqlBoolean do reprezentowania tej trzywartej logiki. Porównania między dowolnymi SqlTypes zwracają typ wartości SqlBoolean. Wartość UNKNOWN jest reprezentowana przez wartość null typu SqlBoolean. Właściwości IsTrue, IsFalsei IsNull są udostępniane w celu sprawdzenia wartości typu SqlBoolean.
Operacje, funkcje i wartości null
Wszystkie operatory arytmetyczne (+, -, *, /, %), operatory bitowe (~, &i |), a większość funkcji zwraca NULL, jeśli którykolwiek z argumentów operacji lub argumentów SqlTypes ma wartość null. Właściwość IsNull zawsze zwraca wartość true lub false.
Precyzja
Typy danych dziesiętnych w środowisku .NET Framework CLR mają różne wartości maksymalne niż typy danych liczbowych i dziesiętnych w programie SQL Server. Ponadto w typach danych dziesiętnych CLR programu .NET Framework przyjmuje maksymalną precyzję. Jednak w środowisku CLR dla programu SQL Server SqlDecimal zapewnia taką samą maksymalną precyzję i skalę oraz taką samą semantykę jak typ danych dziesiętnych w programie SQL Server.
Wykrywanie przepełnienia
W środowisku .NET Framework CLR dodanie dwóch bardzo dużych liczb może nie zgłaszać wyjątku. Zamiast tego, jeśli nie jest używany operator sprawdzania, zwrócony wynik może zawinąć wokół jako ujemnej liczby całkowitej. W System.Data.SqlTypeswyjątki są zgłaszane dla wszystkich błędów przepełnienia i niedopełnienia oraz błędów dzielenia przez zero.