私は、ユーザーがカテゴリボタンをクリックして、関連するカテゴリの製品ボタンを表示できるようにするC#Windowsフォームアプリケーションを構築しています。しかし、何度も試してみましたが、もう一度エラーが発生します。 Image 1、Image 2C#Windowsフォームでボタンの関連カテゴリを表示するには?
public void DisplayCategories()
{
SqlCommand cmd = new SqlCommand("SELECT DISTINCT category FROM Products ORDER BY category ASC", con);
con.Open();
try
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
Button b = new Button();
b.Size = new Size(180,36);
b.BackColor = SystemColors.Control;
b.FlatStyle = FlatStyle.Flat;
b.UseVisualStyleBackColor = false;
b.Text = dr["category"].ToString();
b.Click += new EventHandler(UpdateList);
flpCategory.Controls.Add(b);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
con.Close();
}
void UpdateList(object sender, EventArgs e)
{
Button b = (Button)sender;
SqlCommand subcmd = new SqlCommand("SELECT itemName FROM Products WHERE description = " + b.Text, con);
SqlDataAdapter subda = new SqlDataAdapter(subcmd);
DataTable subdt = new DataTable();
subda.Fill(subdt);
foreach (DataRow subdr in subdt.Rows)
{
Button b2 = new Button();
b2.Size = new Size(180, 50);
b2.BackColor = SystemColors.Control;
b2.FlatStyle = FlatStyle.Flat;
b2.UseVisualStyleBackColor = false;
b2.Text = subdr["itemName"].ToString();
flpItems.Controls.Add(b2);
}
}
Bakeryという名前の列はありません。 SQLインジェクションと書式設定の問題を回避するには、パラメータを使用する必要があります。 – LarsTech
私のデータベースにはすでにBakeryという名前の列があります。 http://i.stack.imgur.com/viT2g.png – Clement
b.Textを引用符で囲まないと、クエリは列を見ていると考えます。したがって、常にパラメータを使用してください。ところで、あなたはBakeryという*カラム*を持っていません。あなたは* data *を持っています。 – LarsTech