mysql c#有字符串时如何按钮.Visible = true?

jutyujz0  于 2023-03-17  发布在  Mysql
关注(0)|答案(2)|浏览(150)

我想让一个按钮可见,但只有当字符串存在时。这是我的想法,但我没有看到我的UI有任何变化。此外,循环没有退出,尽管只返回一个结果。

using (MySqlConnection con = new MySqlConnection(ConnStr))
{
    con.Open();
               
                
    string sqlCON = "SELECT CV_EXIST FROM DATA_NEURON.DM_CV WHERE DWH_CUSTOMER_KEY = '123321'";
    MySqlCommand cmd = new MySqlCommand(sqlCON con);
                
    using (MySqlDataReader rdr = cmd.ExecuteReader())
    {
        while (rdr.Read())   
        {
            var check = rdr.GetString(0);
                        
            if (check == "YES")
            {
                button_cv.Visible = true;
            }
            else
            {
                button_cv.Visible = false;
            }
        }
    }
}

谢谢你,对不起我的英语。

kmb7vmvb

kmb7vmvb1#

请注意,在您当前的实现中,当光标为 empty 且未进入while循环时,button_cv不会改变其状态;另一个可能的问题是(尾随)* 空格 *("YES ")和 * 大小写 *("yes""Yes"等)。如果它是“不工作”,那么我建议这样做:

using (MySqlConnection con = new MySqlConnection(ConnStr)) {
  con.Open();

  //DONE: please, keep SQL readable
  //DONE: parametrize the query or have a good reason not to do it  
  string sqlCON = 
     @"SELECT CV_EXIST  
         FROM DATA_NEURON.DM_CV 
        WHERE DWH_CUSTOMER_KEY = @Key";

  //DONE: do not forget to dispose IDisposable - using
  using (MySqlCommand cmd = new MySqlCommand(sqlCON, con)) {
    //TODO: you may want to change MySqlDbType type, to, say, MySqlDbType.Int32
    cmd.Parameters.Add("Key", "123321", MySqlDbType.VarString);

    // You don't need the entire cursor here, just the 1st record if it exists
    button_cv.Visible = "YES".Equals(
      cmd.ExecuteScalar()?.ToString()?.Trim(), 
      StringComparison.OrdinalIgnoreCase);
  }
}

这里我假设空光标表示NO;如果它是YES,那么您所需要的只是通过添加?? "YES"来更改一行:

cmd.ExecuteScalar()?.ToString()?.Trim() ?? "YES",
6ie5vjzr

6ie5vjzr2#

此代码有语法错误:

MySqlCommand cmd = new MySqlCommand(sqlCON con);

最好的方法是编写一个识别按钮可见性的方法,并使用它:
x一个一个一个一个x一个一个二个x

相关问题