检查SQL中的值以启用文本框和标签

时间:2016-11-11 14:12:26

标签: c# sql winforms if-statement

我在C#中有一个WinForm应用程序,我需要隐藏一些文本框和标签,具体取决于在上一个表单中选择的项目。 我在设计器中禁用了文本框和标签,并根据SQL表中的值再次显示它们。 我的代码是这个,但我不知道如何检查值。

private void build_Load(object sender, EventArgs e) 
{
    con.Open();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select prumos from dbo.modelos";
    SqlDataReader dr = cmd.ExecuteReader();

    if (dr.HasRows)
    {
        while (dr.Read())
        {
            var check = dr["prumos"].ToString();
            textBox13.Visible = check == "2";
            textBox18.Visible = check == "2";
            textBox17.Visible = check == "2";
            label16.Visible = check == "2";
            return;
        }
    }
    else
    {
        //var check = dr["prumos"].ToString();
        //textBox13.Visible = check == "3";
        //textBox18.Visible = check == "3";
        //textBox17.Visible = check == "3";
        //textBox14.Visible = check == "3";
        //textBox16.Visible = check == "3";
        //textBox15.Visible = check == "3";
        //label16.Visible = check == "3";
        //label20.Visible = check == "3";
        //return;
    }
    con.Close();

我还想申请一个else if,这样如果ID为2 ...会显示一些文本框,如果ID为3,则会显示更多内容。

任何人都可以帮忙,

提前致谢。

3 个答案:

答案 0 :(得分:0)

cmd.ExecuteNonQuery();通常用于执行不返回结果的SQL语句(如更新语句)。

使用类似的东西:

var prumos = cmd.ExecuteScalar();

答案 1 :(得分:0)

 con.Open();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "select prumos from dbo.modelos";
    int value = (int)cmd.ExecuteScalar();
    if (value == 2) ; //database value prumos =2
    {
        textBox13.Visible = true;
        textBox18.Visible = true;
        textBox17.Visible = true;
        label16.Visible = true;
        return;
    }
    else if (value == 3) ; //database value prumos = 3 
    {
        textBox13.Visible = true;
        textBox18.Visible = true;
        textBox17.Visible = true;
        textBox14.Visible = true;
        textBox16.Visible = true;
        textBox15.Visible = true;
        label16.Visible = true;
        label20.Visible = true;
        return;
    }

您可以通过编辑代码来执行与上面显示的内容类似的操作。 通过使用ExecuteScalar()将返回您可以根据您的要求将其转换为int或string的对象,或者来自数据库的值,并按照我上面提到的方式使用它。

答案 2 :(得分:0)

SqlReader可以检查您的命令值。检查一下:

con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select prumos from dbo.modelos";
SqlDataReader dr = cmd.ExecuteReader();  



  if (dr.HasRows)
   {

         while(dr.Read())
        {
           var check = dr["prumos"].ToString()
            //if "2" then true, else false 
            textBox13.Visible = check == "2";
        }

   }

 else
  {
     //no row return
  }