簡體   English   中英

在Visual Studio Windows Form中連接數據庫和獲取數據時出現問題

[英]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>";

我的關注:

  1. 我實際上不知道為什么我的第二條代碼只執行一次循環,這是怎么回事,更糟糕的是它甚至不顯示子類別(sql語句中WHERE旁邊的maincategory_id='got_category_id'只是一個占位符我試圖用maincategory_id='1'替換它,只是為了希望它至少檢查它是否顯示了子類別,但實際上我不知道在sql語句中插入整數的正確語法但在Visual Studio中,將其設置為'1'仍然不會顯示任何內容)。

  2. 在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM