2010-05-04 19 views
21

Grüße.C# Convert Bit zu boolean

Ich habe MS SQL Server-Datenbank, die Inhalt Datenfeld von BIT Typ.

Dieses Feld hat entweder 0 oder 1 Werte, die falsch und wahr sind.

ich will, wenn ich die Daten abrufen, den Wert konvertieren von I false oder true bekam if-Zustand ohne die Verwendung der Daten zu false zu konvertieren, wenn es 0 oder true ist, wenn es 1 ist.

Ich frage mich, ob es eine Funktion in C# gibt, würde dies direkt tun, indem Sie Bit-Werte übergeben?

Antwort

26

Je nachdem, wie ausführen Sie die SQL-Abfragen kann es abhängen. Wenn Sie zum Beispiel eine data reader konnte man direkt read a boolean value:

using (var conn = new SqlConnection(ConnectionString)) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.CommandText = "SELECT isset_field FROM sometable"; 
    using (var reader = cmd.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      bool isSet = reader.GetBoolean(0); 
     } 
    } 
} 
12

Wie extrahieren Sie die Felder aus der Datenbank?

Die SqlDataReader Klasse hat eine GetBoolean Methode, die für die Übersetzung tut:

bool yourBoolean = reader.GetBoolean(reader.GetOrdinal("Your_Bit_Column")); 
24
DataReader.GetBoolean(x) 

oder

Convert.ToBoolean(DataRow[x]) 
+6

'Convert.ToBoolean ((Byte) 1);' gibt 'true' zurück – abatishchev

2

SqlDataSource von ASP.NET 2.0 kehrt 0 und 1 für BIT Felder aus.

SqlDataSource von ASP.NET 4.0 entsprechende Zeichenfolge zurückkehrt - Boolean.TrueString ("True") oder Boolean.FalseString ("False").

+1

Bit kann auch NULL sein –

+0

@Guillaume: SQL Typ BIT oder .NET Typ Byte? – abatishchev

+0

SQL-Typ Bit: http://msdn.microsoft.com/en-us/library/aa225961(v=sql.80).aspx –