簡體   English   中英

如何在我的強類型數據集中包含DBNull作為值?

[英]How can I include DBNull as a value in my strongly typed dataset?

我在我的.NET應用程序中創建了一個強類型數據集(MyDataSet)。 為簡單起見,我們假設它有一個DataTable(MyDataTable),一列(MyCol)。 MyCol的DataType屬性設置為“System.Int32”,其AllowDBNull屬性設置為“true”。

我想手動創建一個新行,並將其添加到此數據集中。 我創建了沒有問題的行,例如:

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

精細。 但是,當我嘗試將值設置為DBNull時:

myRow.MyCol = DBNull.Value;

我被告知我不能這樣做......它無法將其轉換為int。 從某種意義上說,這是有道理的,因為我已經將它定義為一個int ...但是我怎樣才能在那里得到DBNull? 我不應該在那里有DBNull嗎? 這不是AllowDBNull屬性的用途嗎?

我顯然錯過了一些有趣的東西。 有人可以幫忙解釋它是什么嗎?

編輯:我也試過輸入“int?” 作為DataType,但是當我輸入它時,Visual Studio會拋出一個錯誤,說“Column需要一個有效的DataType”。

你在MyDataTableRow類中有一個名為SetMyColNull()的生成方法。

myRow.SetMyColNull();

你也可以這樣做:

myRow["MyCol"] = DBNull.Value;

因為myRow["MyCol"]屬於object類型

編輯(由問題OP添加):

還有一個用於讀取此值的對應方法IsMyColNull()。

有兩件事。

允許DBNull是一個單獨的設置,可以將值設置為DBNull。

我只使用DataSet XSD接口來設置它...但我不僅要設置“AllowDBNull = true”,而且還必須設置“NullValue =(null)”。 最初“NullValue”被設置為“(例外)”。 這意味着數據集將接受bieng .Fill()ed with null,但不允許您手動將值設置為null。

不確定這是不是你的問題,但聽起來很相似。

只需轉到數據集中的設計器模式,右鍵單擊要啟用null的字段,然后在屬性窗口中選擇屬性,將AllowDBNull設置為True,將NullValue設置為(NULL); 它對我有用! 最好的祝福 !

int不接受null,但是int? (可以使用的版本)。 我認為你需要那個數據類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM