MS-SQL Warum True oder False und nicht 1 oder 0?

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    MS-SQL Warum True oder False und nicht 1 oder 0?

    Moin! :)
    Ich habe eine Tabelle in einem SQL-Server gespeichert.
    Der Wert der Spalte ist ein BIT, es hat entweder 0 oder 1.
    Wenn ich nun den Wert mit dem SQL-Management Studio zeigt er mir die zum Beispiel 1 an.
    Wenn ich diese nun aber aus VB.NET herauslese, wird TRUE oder FALSE angezeigt!
    Ich habe das Projekt auf Option Strict On gestellt.
    Ich möchte nur wissen, warum Visual Studio einen Boolean Wert anzeigt? :?:
    Und nicht den Zahlenwert(0 oder 1), dieser in der Tabelle vorhanden ist.
    Freue mich auf eure Antwort!
    BIG THX

    SQL-Abfrage

    1. SELECT FensterClosen FROM tblSitzungBeendenApp


    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Wie ist denn der Value(0) in der Datenbank deklariert?
    erg ist ja als String deklariert, also "True", nicht aber True.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Die Spalte FensterClosen ist als bit deklariert.

    Microsoft SQL-Dokumentation
    Die Zeichenfolgenwerte TRUE und FALSE können in bit -Werte konvertiert werden: TRUE wird in 1 konvertiert, und FALSE wird in 0 konvertiert.
    Die Konvertierung in den bit-Datentyp ergibt für alle Werte ungleich 0 den Wert 1.
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Cheffboss Klar.
    Bits sind stets True oder False, BitArrays sind eine "Ansammlung" davon.
    docs.microsoft.com/de-de/dotne…ray?view=netframework-4.8
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sql-Datentypen sind etwas ganz anderes als .Net-Datentypen.
    Boolean (true/false) gibts in Sql nicht, man nimmt stattdessen bit (1/0).
    SqlDatentypen werden durch Ado.Net-Infrastruktur in .Net-Datentypen konvertiert und zurück.

    Das geht bei bit/Boolean noch besonders einfach und eindeutig, viel kritischer sind Zahlen, Zeitwerte, TextWerte - da gibts jeweils mehrere Möglichkeiten, und zusätzliche Einstellungen, die's in .Net garnet gibt.
    ZB Text fester Länge, variabler Länge, UniCode-Text, verschiedene Collationen (ist iwas kultur-abhängiges) und verschiedene Kombinationen davon. Das alles gibts in .Net nicht, da gibts nur String.
    Aber die Ado.Net-Infrastruktur kümmert sich so leidlich darum, dass das hinhaut.