Frage

Ich habe ein stark typisierte Dataset (MyDataSet) in meinem .NET-app erstellt. Aus Gründen der Einfachheit, werden wir sagen, es ein Datatable (MyDataTable) hat, mit einer Spalte (MyCol). MyCol hat seine Datatype-Eigenschaft auf „System.Int32“, und seine AllowDBNull Eigenschaft auf „true“.

würde Ich mag manuell eine neue Zeile erstellen, und es zu diesem Datensatz hinzufügen. Ich schaffe die Zeile, ohne ein Problem, mit so etwas wie:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();

Fein. Aber wenn ich versuche, den Wert auf DBNull zu setzen:

myRow.MyCol = DBNull.Value;

Man hat mir gesagt, dass ich es nicht tun kann ... dass es nicht so in einen int werfen kann. Dies macht Sinn, in einer Art und Weise, da ich definiert habe es ein int zu sein ... aber wie kann ich dann DBNull bekommen da drin? Soll ich nicht in der Lage sein DBNull in dort zu haben? Ist das nicht das, was die AllowDBNull Eigenschaft ist für die?

Ich bin fehlt offensichtlich etwas fundemental. Kann jemand helfen, zu erklären, was es ist?

EDIT: "int" Ich habe auch versucht die Eingabe als Datentyp, aber Visual Studio wirft einen Fehler, wenn ich es geben und sagte, dass „Spalte einen gültigen Datentyp erfordert.“

War es hilfreich?

Lösung

Sie haben in MyDataTableRow Klasse eine generierte Methode mit dem Namen:. SetMyColNull ()

myRow.SetMyColNull();

Sie können auch tun:

myRow["MyCol"] = DBNull.Value;

da myRow["MyCol"] ist vom Typ object

EDIT (ergänzt durch Frage OP):

Es gibt auch ein Gegenstück Verfahren erzeugt für diesen Wert das Lesen wieder aus, IsMyColNull ().

Andere Tipps

Es gibt zwei Dinge.

Unter Berücksichtigung DBNull ist eine separate Einstellung von der Möglichkeit, den Wert auf DBNull einzustellen.

Ich habe nur die DataSet XSD-Schnittstelle dies zu setzen ... aber ich musste nicht nur auf „AllowDBNull = true“, aber ich hatte auch „Nullvalue = (null)“ einzustellen. Ursprünglich „Nullvalue“ in „(Exception)“ gesetzt. Dies bedeutete, dass der Datensatz würde bieng .Fill () ed mit null annehmen, aber würden Sie nicht erlauben, den Wert manuell auf null gesetzt.

Nicht sicher, ob dies das Problem ist, aber es klingt ähnlich.

gehen Sie einfach auf Designer-Mode in Dataset und klicken Sie rechts auf dem Feld, die Sie null sein wollen aktiviert ist, und wählen Sie Eigenschaften, Eigenschaftenfenster gesetzt AllowDBNull auf True und Nullvalue auf (NULL); es funktioniert das Richtige für mich! Mit freundlichen Grüßen!

int akzeptiert keine null, aber int? (Die INullable Version) der Fall ist. Ich glaube, Sie müssen diesen Datentyp statt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top