私は2つのmysqlを持っていますTABLES
- ORDER
とORDER_DETAILS
関係が1つの注文には多くのorder_detailsがあります。ループのために挿入するときに変数がすでに定義されています
注文を作成した後、私は最後に挿入されたIDを取得し、最後に挿入された最後の注文IDを持つ注文の詳細をforループを介して挿入する必要があります。しかし、ここでは、複数の注文の詳細を持つとき
@order_idがすでに
に定義されたメッセージを示しています。 1つの注文詳細であれば動作します。
ここでこの注文IDをどのように定義できますか?これは間違った方法ですか?ここに私のコードです:
private void button2_Click(object sender, EventArgs e)
{
try
{
DateTime localDate = DateTime.Now;
MydbConnection db = new MydbConnection();
MySqlConnection con = db.connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "insert into orders (created) values(@localDate)";
cmd.Parameters.AddWithValue("@localDate", localDate);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
long lastId = cmd.LastInsertedId;//Last inserted id
for (int i = 0; i < listView3.Items.Count; i++)
{
cmd.CommandText = "insert into order_details (order_id,product_id,qty) values(@order_id,@product_id,@qty)";
cmd.Parameters.AddWithValue("@order_id", lastId);
cmd.Parameters.AddWithValue("@product_id", 1);
cmd.Parameters.AddWithValue("@qty", listView3.Items[i].SubItems[1]);
cmd.ExecuteNonQuery();
}
}
catch (Exception es) {
MessageBox.Show("Order not saved! "+es.Message);
}
}
ループ内に新しいコマンドオブジェクトを作成してみてください。 –
この 'cmd = new MySqlCommand();'もループの中に入れてください。 –
私はそれも.. ..( – user3722956