我正在开发一个Windows应用商店应用,它有许多列表框可以从数据库中检索数据, 这是我的MySQL数据库截图
之后,数据库列表框中的Null值未填充数据,如下面的屏幕截图所示
我想在列表框中将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();
}
}
答案 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的列。