6

Czy ktoś wie, co jest DbType równoważne SqlDbType.Bit?DbType będący odpowiednikiem SqlDbType.Bit

Próbuję przekonwertować

param[0] = new SqlParameter("@Status", SqlDbType.Bit); 
param[0].Value = Status; 

do

db.AddInParameter(dbCommand, "@Status", <DbType dbType>, Status); 

ale nie wiem którego użyć dbtype reprezentować pojedynczy bit. Jakieś pomysły?

+2

być może boolean? Mimo że typ DbType jest bitem, a typ .NET to bool, to co masz na myśli przez "DbType będący odpowiednikiem SqlDbType.Bit?" – Freeman

+0

Zgadzam się, Boolean, ponieważ jest przechowywany jako 0 lub 1. – Derek

+1

@Freeman nie byłby boolowskim prawda czy fałsz? i bit bierze 1, 0 .. – Aditi

Odpowiedz

7

Typ bazy danych bit jest reprezentowany jako boolean po stronie serwera, więc odpowiednia wartość DbType to DbType.Boolean.

7

DbType.Boolean:

Prosty reprezentujący typ Boolean wartości prawda lub fałsz.

SqlDbType.Bit:

Boolean. Niepodpisana wartość liczbowa, która może wynosić 0, 1 lub zero.

Ich opis na nie bardzo pasuje, ale ponieważ Bit jest opisano jako Boolean, to najbardziej odpowiednie dopasowanie.

+0

Czy coś podobnego wtedy działa - 'cmd.Parameters.Add (" @ isActive ", SqlDbType.Bit) .Value = Fałsz" – MaylorTaylor

+0

Czy jest to najbardziej odpowiednie? C# zna 'null', podobnie jak puste pola' BIT' w SQL. Na przykład SQL Server akceptuje tylko '0/1/NULL' zamiast' true/false'. – dakab

+0

@dakab - tutaj są różne problemy, których nie uwzględniłem w mojej odpowiedzi - takie jak fakt, że SQL Server nie ma rzeczywistego typu danych boolowskich ("bit" jest opisany w dokumentacji jako typ numeryczny) i że , jeśli SQL Server * był * w celu implementacji odpowiedniego typu danych boolowskich (SQL Standard), to ze względu na użycie logiki trójwartościowej, ten typ powinien obsługiwać 'true',' false' i 'unknown', plus (standardowy dla każdego typu) brak wartości poprzez 'null'. –

Powiązane problemy