如何在列表框中存储空值c#

时间:2014-10-18 08:43:56

标签: c# mysql listbox

我正在开发一个Windows应用商店应用,它有许多列表框可以从数据库中检索数据, 这是我的MySQL数据库截图

enter image description here

之后,数据库列表框中的Null值未填充数据,如下面的屏幕截图所示

enter image description here

我想在列表框中将Null值保持为空并存储其他详细信息我该怎么做

这是C#代码

 private void Button_View_Click(object sender, RoutedEventArgs e)
    {
        listb0.Items.Clear();
        listb1.Items.Clear();
        listb2.Items.Clear();
        listb3.Items.Clear();
        listb4.Items.Clear();            
        try
        {
            string Query = @"SELECT * FROM `bcasdb`.`tbl_results`;";
            //This is command class which will handle the query and connection object.
            MySqlConnection conn = new MySqlConnection(BCASApp.DataModel.DB_CON.connection);
            MySqlCommand cmd = new MySqlCommand(Query, conn);
            MySqlDataReader MyReader;
            conn.Open();
            MyReader = cmd.ExecuteReader();// this query will be executed and data saved into the database.           
            while (MyReader.Read())
            {
                ListBoxItem itm0 = new ListBoxItem();
                itm0.Content = MyReader.GetString(0);
                this.listb0.Items.Add(itm0);

                ListBoxItem itm1 = new ListBoxItem();
                itm1.Content = MyReader.GetString(1);
                this.listb1.Items.Add(itm1);

                ListBoxItem itm2 = new ListBoxItem();
                itm2.Content = MyReader.GetString(2);
                this.listb2.Items.Add(itm2);

                ListBoxItem itm3 = new ListBoxItem();
                itm3.Content = MyReader.GetString(3);
                this.listb3.Items.Add(itm3);

                ListBoxItem itm4 = new ListBoxItem();
                itm4.Content = MyReader.GetString(4);
                this.listb4.Items.Add(itm4);
            }
            conn.Close();
        }
        catch (Exception)
        {
            errormsgBox();
        }

    }       

3 个答案:

答案 0 :(得分:0)

您可以使用IFNULL(<colName>,'Defaultvalue'),这样如果数据库中有null值,则在选择查询结果中会有一些默认值。

在您的情况下,查询(选择查询)将是这样的

"SELECT tbl_subject_sub_id, reg_id, ifnull(type,'') type,status,grade  FROM `bcasdb`.`tbl_results`;"

答案 1 :(得分:0)

if(MyReader.GetString(index) == null)
{
   // do stuff !
}

您应检查空值MyReader.GetString.您还可以查看string.IsNullOrEmpty(MyReader.GetString(index))

答案 2 :(得分:0)

如果您希望在代码中解决此问题,则需要使用DataReader的DBNull方法检查DBNull

ListBoxItem itm2 = new ListBoxItem();
itm2.Content = MyReader.IsDBNull(2) ? "" : MyReader.GetString(2);
this.listb2.Items.Add(itm2);

当然,此模式应该应用于其他可能为null的列。