[英]Sql Datareader null values
我正在從C#中的SQL數據讀取器讀取數據,並將列中的值傳遞到下拉列表中。 有兩列正在讀取。 使用IsDbNull,我可以處理空值。 但是,正如我現在編寫的代碼一樣,如果dr.GetString(0)為null,則根本不會傳遞任何值,而只要dr.GetString(1)(或都不為null),則所有傳遞值,而忽略空值。 這是我在讀取數據讀取器時需要的:
while (dr.Read())
{
if (!dr.IsDBNull(0))
{
machineName.Items.Add(dr.GetString(0).ToString());
}
else if (!dr.IsDBNull(1))
{
machineName.Items.Add(dr.GetString(1).ToString());
}
}
我需要做的是使用數據讀取器返回的任何值填充下拉列表,無論它們位於哪一列中。為了使代碼混亂,我刪除了using和try / catch語句。 感謝大家。
我在閱讀器中處理null的首選方法是使用命名列,然后使用Convert.ToString(object)
因此,您將具有以下優勢:
while (dr.Read())
{
string firstItem = Convert.ToString(dr["FIRST_ITEM"]);
if(!string.IsNullOrEmpty(firstItem))
{
machineName.Items.Add(firstItem);
}
... etc.
}
不過,我不確定我是否理解您的問題。
你說
但是,正如我現在編寫的代碼一樣,如果dr.GetString(0)為null,則根本不會傳遞任何值,而只要dr.GetString(1)(或都不為null),則所有傳遞值,而忽略空值。
聽起來您正在使用if / else if,但是您的代碼顯示了兩個if語句。
編輯:
為了更好地解決您更新的問題,我的解決方案是擁有一個ListItems的通用列表,並將每一列添加到該列表中。 然后,將該列表綁定到下拉列表:
List<ListItem> items = new List<ListItem>();
while(dr.Read())
{
string firstItem = Convert.ToString(dr["FIRST_ITEM"]);
if(!string.IsNullOrEmpty(firstItem))
{
ListItem thisItem = new ListItem(firstItem, firstItem);
items.Add(thisItem);
}
}
machineName.Items = items;
這樣,如果您沒有數據,則項目將為空。 如果一行中有一列,而另一行中有另一列,則會適當地添加它們。 但是,如果取出其他代碼,則您的代碼應該相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.