When I try to get the value of 1 column out of my Database(using ExecuteScalar()
, to string or integer nothing works) It crashes at the execution.
Is it because I am using ExecuteScalar()
in my open SqlDataReader
?
Here is my code, it crashes at iAantal:
SqlCommand get_order = new SqlCommand("SELECT * FROM Factuur WHERE ID = @ID1 OR order_id = @ID2", con);
get_order.Parameters.AddWithValue("@ID1", Session["LastOrderID"].ToString());
get_order.Parameters.AddWithValue("@ID2", Session["LastOrderID"].ToString());
SqlDataReader rdrOrder = get_order.ExecuteReader();
iAantal = 2;
while(rdrOrder.Read())
{
from_db_producten += "<tr>";
sHuidigeDatum = rdrOrder["besteldatum"].ToString();
sLeverdatum = rdrOrder["leverdatum"].ToString();
sToestelID = rdrOrder["item_id"].ToString();
iPrijsPerStuk = Convert.ToInt32(rdrOrder["prijs"]);
SqlCommand check_aantal_toestel = new SqlCommand("SELECT COUNT(item_id) FROM Factuur WHERE ID = @orderID1 OR order_id = @orderID2 AND item_id = @itemID", con);
check_aantal_toestel.Parameters.AddWithValue("@orderID1", Session["LastOrderID"].ToString());
check_aantal_toestel.Parameters.AddWithValue("@orderID2", Session["LastOrderID"].ToString());
check_aantal_toestel.Parameters.AddWithValue("@itemID", sToestelID);
iAantal = Convert.ToInt32(check_aantal_toestel.ExecuteScalar());
SqlCommand get_toestel_merk = new SqlCommand("SELECT item_value FROM ItemSpecificatie WHERE item_key = @merk AND item_id = @ID", con);
get_toestel_merk.Parameters.AddWithValue("@merk", "Merk");
get_toestel_merk.Parameters.AddWithValue("@ID", sToestelID);
SqlCommand get_toestel_naam = new SqlCommand("SELECT item_value FROM ItemSpecificatie WHERE item_key = @naam AND item_id = @ID", con);
get_toestel_merk.Parameters.AddWithValue("@naam", "Naam");
get_toestel_merk.Parameters.AddWithValue("@ID", sToestelID);
sToestelmerk = Convert.ToString(get_toestel_merk.ExecuteScalar());
sToestelnaam = Convert.ToString(get_toestel_naam.ExecuteScalar());
iPrijsTotaal = iAantal * iPrijsPerStuk;
}