[英]Problems in connecting to the database and fetching data in Visual Studio Windows Form
我有一個組合框,應該輸出主類別(具有4行),然后還輸出其下的子類別(例如,第一個主類別下的3個子類別,第二個主類別下的5個子類別,依此類推)。
我的第一個代碼正確顯示了主要類別(組合框有4個結果)
private void Form1_Load(object sender, EventArgs e)
{
sc.Open();
//For Main Category
SqlCommand get_maincategory_name = new SqlCommand("SELECT * FROM maincategory", sc);
SqlDataReader dr2 = get_maincategory_name.ExecuteReader();
while (dr2.Read())
{
comboBox1.Items.Add(dr2["maincategory_name"].ToString());
}
sc.Close();
}
但是我嘗試在主類別的while循環下為子類別插入另一個循環,但組合框上的所有內容都是主類別的第一行(組合框只有1個結果,即結果的第一行)。主類別表)
我使用的代碼是:
private void Form1_Load(object sender, EventArgs e)
{
sc.Open();
//For Main Category
SqlCommand get_maincategory_name = new SqlCommand("SELECT * FROM maincategory", sc);
SqlDataReader dr2 = get_maincategory_name.ExecuteReader();
while (dr2.Read())
{
comboBox1.Items.Add(dr2["maincategory_name"].ToString());
//For Sub Category
int got_category_id = Convert.ToInt32(dr2["maincategory_id"]);
SqlCommand get_subcategory_name = new SqlCommand("SELECT * FROM subcategory WHERE maincategory_id='got_category_id'", sc);
SqlDataReader dr3 = get_subcategory_name.ExecuteReader();
while (dr3.Read())
{
comboBox1.Items.Add(dr3["subcategory_name"].ToString());
}
}
sc.Close();
}
我唯一的編程經驗是在php上,所以我嘗試在PHP上創建預期的代碼,並且效果很好,但是在Visual Studio中將其應用於C#時遇到了麻煩,如果您想知道我在嘗試什么,這就是我的代碼實現:
echo "<select>";
// FOR MAIN CATEGORY
$maincategory_query = mysqli_query($con,"SELECT * FROM maincategory") or mysqli_error();
while($got = mysqli_fetch_assoc($maincategory_query))
{
$maincategory_id = $got['maincategory_id'];
$maincategory_name = $got['maincategory_name'];
echo "<option disabled>$maincategory_name</option>";
// FOR SUB CATEGORY
$subcategory_query = mysqli_query($con,"SELECT * FROM subcategory WHERE maincategory_id='$maincategory_id'") or mysqli_error();
while($got = mysqli_fetch_assoc($subcategory_query))
{
$subcategory_id = $got['subcategory_id'];
$subcategory_name = $got['subcategory_name'];
echo "<option disabled>--$subcategory_name</option>";
// FOR ITEM
$item_query = mysqli_query($con,"SELECT * FROM item WHERE subcategory_id='$subcategory_id'") or mysqli_error();
while($got = mysqli_fetch_assoc($item_query))
{
$item_id = $got['item_id'];
$item_name = $got['item_name'];
echo "<option>----$item_name</option>";
}
}
}
echo "</select>";
我的關注:
我實際上不知道為什么我的第二條代碼只執行一次循環,這是怎么回事,更糟糕的是它甚至不顯示子類別(sql語句中WHERE旁邊的maincategory_id='got_category_id'
只是一個占位符我試圖用maincategory_id='1'
替換它,只是為了希望它至少檢查它是否顯示了子類別,但實際上我不知道在sql語句中插入整數的正確語法但在Visual Studio中,將其設置為'1'仍然不會顯示任何內容)。
在Visual Studio中的sql語句內插入整數的正確語法是什么? 我研究並嘗試將&放在變量的開頭和結尾,但是它不起作用。
它與構建第二個查詢的方式有關。 嘗試使用String.Format將類別ID正確嵌入查詢中。
SqlCommand get_subcategory_name = new SqlCommand(String.Format("SELECT * FROM subcategory WHERE maincategory_id='{0}'", got_category_id), sc);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.