从mysql数据库中删除iport数据后组合框中的所有空值

本文关键字:组合 空值 数据 数据库 mysql 删除 iport | 更新日期: 2023-09-27 18:26:30

我正在为我的办公室开发一些winforms应用程序。在我的应用程序中,我有50多个组合框,我想连接MySQL数据库并检索数据。每个组合框都应该从某个MySQL数据库列中检索数据。无论如何,我成功地建立了连接,并使用下面的代码检索到组合框中的数据。

但现在我有一个非常奇怪的问题。在我的MySQL数据库中有很多空值(有些列包含30行,而有些只有1或2行)。在数据检索到组合框后,第一个组合框(与第二列相关)正确显示数据,但从第二列开始,它只显示一到两行。列中的所有其他值均未显示。我浏览了一些论坛,并将我的al-null值设置为空字符串。但在此之后,组合框会在最后一个字段之后显示空白条目列表。

在我的查询之后,我也尝试了IS NOT NULL,这也不起作用:(

如何克服这种情况?我想检索所有组合框的数据,并且没有任何空值或null值。我使用的是.net框架2.0

这可以在C#或SQL查询中以编程方式实现吗?还是应该更改数据库结构?

(我对MySQL没有很好的了解。我使用工作台创建数据库:()

这是我当前的代码

 void combobox()
    {
        string constring = string.Format("datasource='{0}';port='{1}';database='{2}';username=****************;password=************;Connect Timeout=180;Command Timeout=180", dbserverip.Text,curport.Text,currentdb.Text);
        string Query = "select * from estifdb.customconditions ;";
        MySqlConnection conn = new MySqlConnection(constring);
        MySqlCommand cmd = new MySqlCommand(Query, conn);
        MySqlDataReader myreader666;
        try
        {
            conn.Open();
            myreader666 = cmd.ExecuteReader();

            while (myreader666.Read())
            {
                string sName = myreader666.GetString("someval1");
                applicationcombobox.Items.Add(sName);
                string sName2 = myreader666.GetString("someval2");
                applicationcombobox2.Items.Add(sName2);
                string sName3 = myreader666.GetString("someval3");
                applicationcombobox3.Items.Add(sName3);
                string sName4 = myreader666.GetString("someval4");
                applicationcombobox4.Items.Add(sName4);
                string sName5 = myreader666.GetString("someval5");
                applicationcombobox5.Items.Add(sName5);

               // and 50 left

从mysql数据库中删除iport数据后组合框中的所有空值

我想你需要这样的东西:

  while (myreader666.Read()) {
    for (int i = 0; i < myreader666.FieldCount; ++i) {
      if (reader.IsDBNull(i))
        continue;
      String fieldName = myreader666.GetName(i);
      String fieldValue = myreader666.GetValue(i).ToString();
      //TODO: write a method to find out ComboBox by field name
      ComboBox combo = GetComboByFieldName(fieldName);
      if (combo != null)
        combo.Items.Add(fieldValue);
    }
  }

必须实现一种方法,通过其字段名

找到正确的ComboBox

你也尝试过这样的东西吗:

string sName = myreader666.GetString("1003");
if(sName != null && !sName.Equals(""))
    applicationcombobox.Items.Add(sName);

尝试使用ABS,如SELECT ABS(column_name)as AbsoluteA FROM YourTable

if(myreader666.GetString("someval1") != null)
{
     string sName = myreader666.GetString("someval1");
     applicationcombobox.Items.Add(sName);
}

你可以这样做。可能您也不想将empty.string添加到组合框中。在这种情况下,添加到if(myreader666.GetString("someval1") != null && myreader666.GetString("someval1").Trim() != "")

你的设计很糟糕,你可以用for循环检查答案

编辑:

if(myreader666.GetString("someval1") != null)
{
     string sName = myreader666.GetString("someval1");
     applicationcombobox2.Items.Add(sName);
}
if(myreader666.GetString("someval2") != null)
{
     string sName2 = myreader666.GetString("someval2");
     applicationcombobox.Items.Add(sName2);
}

等等,对于每个特定的