У меня есть две таблицы базы данных, одна -
ORDERS: OR_ID (PK), U_NAME, OR_TotalPrice, OR_STATUS, PROMO_ID
, а другая -
Order Details: OR_ID(FK to ORDERS) Product_ID, OR_QTY, Product_TotalPrice
Когда я выполняю скалярный метод для получения OrderID из Order, я не могу показаться использовать этот OrderId для заполнения моих OrderDetails с использованием этого идентификатора.
Вот мой код;
SqlConnection conn = new SqlConnection("Data Source=localhost; Initial Catalog=ProjectDB; Integrated Security=SSPI");
conn.Open();
String addOrder = "INSERT INTO ORDERS VALUES(@U_NAME,@OR_TOTALPRICE,@OR_STATUS,@PROMO_ID) SELECT CAST(scope_identity() as int)";
String addDetails = "INSERT INTO Order_Details VALUES(@OR_ID,@PRODUCT_ID, @OR_DE_QTY, @OR_DE_TotalPrice)";
SqlCommand cmdATO = new SqlCommand();
using (conn)
{
cmdATO.CommandText = addOrder;
cmdATO.Connection = conn;
cmdATO.Parameters.AddWithValue("@U_NAME", name);
cmdATO.Parameters.AddWithValue("@OR_TOTALPRICE", finalTotal);
cmdATO.Parameters.AddWithValue("OR_STATUS", false);
cmdATO.Parameters.AddWithValue("PROMO_ID", 0);
try
{
conn.Open();
orderID = (int)cmdATO.ExecuteScalar(); //Gets Order_ID
lblError.Text = ""+orderID;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
if (orderID != 0)
{
using(conn)
{
cmdATO.CommandText = addDetails;
cmdATO.Connection = conn;
conn.Open();
try
{
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
cmdATO.Parameters.AddWithValue("@OR_ID", orderID);
cmdATO.Parameters.AddWithValue("@PRODUCT_ID", dt.Rows[i]["product_ID"]);
cmdATO.Parameters.AddWithValue("@OR_DE_TOTALPRICE", dt.Rows[i]["totalprice"]);
cmdATO.Parameters.AddWithValue("@OR_DE_QTY", dt.Rows[i]["quantity"]);
cmdATO.ExecuteNonQuery();
}
}
catch(Exception ez)
{
Console.WriteLine(ez.Message);
}
}
}