0

C# ATM で苦労しています...

この厄介なコードについては、次のとおりです。

foreach (DataGridViewRow r in dgv_selectedOrders.Rows)
            {
                MessageBox.Show(r.Cells[0].Value.ToString());
                order_id = r.Cells[0].Value.ToString();
                query = "SELECT count(orders.id) AS total_orders FROM orders WHERE customer_id = (SELECT customer_id FROM orders WHERE id = " + order_id + ");";
                command = new MySqlCommand(query, conn);
                MySqlDataReader sda = command.ExecuteReader();
                while (sda.Read())
                    dgv_selectedOrders[11,r.Index].Value = sda.GetInt32(0).ToString();*/

            }

このループは 2 回だけ実行され、その後停止します...

興味深いのは、「MessageBox」を除くすべてのコメントを外すと、各行がうまくループし、DataGridView のすべての「order_id」が表示されることです。

それがすべきことは次のとおりです。

既存の DataGridView をループし、各行から「Order_id」を取得します。次に、顧客がすでに行った注文の数を数え、その結果を DataGridView の列 11 に追加します...

何か案は?

おっしゃる通り、2列目以降は止まりますが……

4

1 に答える 1

0

わかりましたみんな、

解決策は非常に簡単です。

最初に MySqlDataReader を閉じてください -.-... 笑

sda.Close();

while ループの後。

乾杯、

于 2014-11-09T10:47:05.013 に答える