6

Qualcuno sa qual è l'equivalente DbType a SqlDbType.Bit?DbType equivalente a SqlDbType.Bit

Sto cercando di convertire

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

a

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

ma non so che DbType da utilizzare per rappresentare un singolo bit. Qualche idea?

+2

un booleano forse? Anche se DbType è Bit e il tipo .NET è bool, quindi cosa intendi per "DbType equivalente a SqlDbType.Bit?" – Freeman

+0

Sono d'accordo, Booleano, poiché è memorizzato come 0 o 1. – Derek

+1

@Freeman non un booleano può essere vero o falso? e bit prende 1, 0 .. – Aditi

risposta

7

Il tipo di database bit è rappresentato come un booleano sul lato server, quindi il valore DbType corrispondente è DbType.Boolean.

7

DbType.Boolean:

Un tipo semplice che rappresenta valori booleani di vero o falso.

SqlDbType.Bit:

Boolean. Un valore numerico senza segno che può essere 0, 1 o null.

di loro descrizione non corrispondono pienamente, ma dal momento che Bit è descritto come un Boolean, è la partita più appropriata.

+0

Allora qualcosa del genere funzionerà - 'cmd.Parameters.Add (" @ isActive ", SqlDbType.Bit) .Value = False' – MaylorTaylor

+0

È più appropriato? C# conosce "null", come i campi NULL "BIT" in SQL. SQL Server, ad esempio, accetta solo '0/1/NULL' piuttosto che' true/false'. – dakab

+0

@dakab - ci sono vari problemi qui che non ho incluso nella mia risposta - come il fatto che SQL Server non ha un tipo di dati booleano effettivo ('bit' è descritto nella documentazione come un tipo numerico) e che , se SQL Server * fosse * per implementare il corretto tipo di dati booleani (SQL Standard), a causa del suo uso della logica a tre valori, quel tipo dovrebbe supportare 'true',' false' e ​​'unknown', oltre a (standard per ogni tipo) assenza di un valore tramite 'null'. –