Was ist der Sinn von DBNull?

In .NET da ist der null Referenz, das wird überall verwendet, um anzuzeigen, dass eine Referenz auf ein Objekt leer ist, und dann gibt es die DBNull zu, die von Datenbank-Treiber (und einige andere) zu bezeichnen... ziemlich viel die gleiche Sache. Natürlich, das schafft eine Menge Verwirrung und Konvertierungsroutinen zu aufgewühlt, etc.

Also, warum ist das original .NET-Autoren entscheiden? Für mich macht es keinen Sinn. Ihre Dokumentation macht keinen Sinn, entweder:

Der DBNull-Klasse repräsentiert einen nicht vorhandenen Wert. In einer Datenbank beispielsweise eine Spalte in einer Zeile einer Tabelle kann keine Daten enthalten, löschen. Das heißt, die Spalte ist als nicht vorhanden, statt nur nicht mit einem Wert. Ein DBNull-Objekt repräsentiert die nicht vorhandene Spalte. Darüber hinaus werden die COM-interop, verwendet die Klasse DBNull zu unterscheiden zwischen einem VT_NULL Variante, die zeigt einen nicht vorhandenen Wert, und ein VT_EMPTY Variante, die zeigt an, das ein unbekannter Wert.

Was dieser Mist über eine "Spalte nicht vorhanden"? Eine Spalte vorhanden ist, ist es einfach nicht Wert für die jeweilige Zeile. Wenn es das nicht gibt, ich würde eine Ausnahme ausgelöst werden, versuchen auf die spezifische Zelle, nicht eine DBNull! Ich kann verstehen, die Notwendigkeit zu unterscheiden zwischen VT_NULL und VT_EMPTYaber warum dann nicht eine COMEmpty statt Klasse? Das wäre ein viel ordentlicher passen in das ganze .NET framework.

Bin ich etwas fehlt? Kann jemand Aufschluss geben, warum DBNull erfunden wurde und welche Probleme hilft es zu lösen?

InformationsquelleAutor der Frage Vilx- | 2010-12-20

Schreibe einen Kommentar