C# 签入Sql数据“;如果“*”。每个按钮的文本都存在

C# 签入Sql数据“;如果“*”。每个按钮的文本都存在,c#,sql-server,C#,Sql Server,我有以下表格: 在我的Sql中,还有一个表 我想签入Sql数据“IF”*。每个按钮的文本都存在,如果存在,请将颜色更改为红色。 我正在使用这个代码 private void Form1_Load(object sender, EventArgs e) { System.Windows.Forms.Timer timer1 = newSystem.Windows.Forms.Timer(); timer1.Interval = 3000;//3 seconds timer1.Tick += ne

我有以下表格:

在我的Sql中,还有一个表

我想签入Sql数据“IF”*。每个按钮的文本都存在,如果存在,请将颜色更改为红色。 我正在使用这个代码

private void Form1_Load(object sender, EventArgs e)
{
System.Windows.Forms.Timer timer1 = newSystem.Windows.Forms.Timer();
timer1.Interval = 3000;//3 seconds
timer1.Tick += new System.EventHandler(timer1_Tick);
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
SqlCommand CheckNone = new SqlCommand("IF EXISTS(SELECT * from tables where 
tablenumber=101 ) SELECT 1 ELSE SELECT 0", con);
con.Open();

var result = (int)CheckNone.ExecuteScalar();
if (result == 0)
{
button4.BackColor = Color. Green;
}
else
button4.BackColor = Color.Red;
}
……对我的其余按钮执行相同操作

但是我想避免为所有按钮编写代码。 我想自动检查sql数据中是否存在button.text,以及是否存在,以将颜色更改为红色

我试过这个代码,但不起作用

foreach (Control c in this.Controls)
{
Button btn = c as Button;
{
SqlCommand CheckNone = new SqlCommand("IF EXISTS(SELECT * from tables where 
tablenumber= '" + c.Text + "' ) SELECT 1 ELSE SELECT 0", con);     
con.Open();

var result = (int)CheckNone.ExecuteScalar();
if (result == 0)
{
c.BackColor = Color. Green;
}
else
c.BackColor = Color.Red;
}
还有别的方法吗


或者使用标记属性更好?

我建议使用sql依赖项。另外,不要添加/删除表示状态的记录-使用新列。然后选择所有表并动态创建控件。如果只执行“从tablenumber中选择tablenumber,其中tablenumber=“+c.TEXT”,然后检查返回的记录计数(零,它不存在),而不是使用“IF”子句,那么会更干净。请注意,将表称为“tablenumber”,然后将表中的字段也称为“tablenumber”不是一个好主意。我有一些代码,可以动态地实现按钮的功能。如果您希望我将其作为答案提交,我很乐意这样做,但正如Daniel在上面所说的,您目前处理SQL的方式并不好。谢谢您,先生。你能给我举个例子吗?使用TAG属性对我来说更好吗?