Je ne sais pas comment faire ça.
Quand l'user a acheté tous les produits que je veux l'insert dans la table de commands, en outre je veux insert là customer_id de la table de client où l'user se connecte = Session ["id"]. J'ai essayé mais ça n'a pas marché: / Que dois-je faire?
protected void ConfirmPurchase_Click(object sender, EventArgs e) { if (Session["id"] != null) { ssortingng username; username = Convert.ToSsortingng(Session["id"]); SqlConnection con = new SqlConnection(@"Data Source=SOME_SQL;Initial Catalog=Shop;Integrated Security=True"); con.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO Orders (order_date, paid, transact_status, customer_id) VALUES (GETDATE() ,'" + cost.ToSsortingng("c") + "' ,'Przyjęto do bazy', SELECT customer_id FROM Customer WHERE login='" + username + "')", con); cmd.ExecuteNonQuery(); Response.Redirect("Payment/Payment.aspx"); } else { Response.Redirect("InputPersonalData.aspx"); } }
Vous pouvez essayer en entourant l'user avec "(" et ")"
Au lieu de
SELECT customer_id FROM Customer WHERE login='" + username + "'
utilisation
( SELECT customer_id FROM Customer WHERE login='" + username + "' )
Vous combinez les deux saveurs de INSERT, INSERT … VALUES et INSERT … SELECT; l'option la plus facile à mon avis est de le faire à travers un INSERT … SELECT:
SqlCommand cmd = new SqlCommand("INSERT INTO Orders (order_date, paid, transact_status, customer_id) SELECT GETDATE() ,'" + cost.ToSsortingng("c") + "' ,'Przyjęto do bazy', customer_id FROM Customer WHERE login='" + username + "'", con);
Ensuite, il est recommandé d'utiliser des requêtes paramétrées pour éviter les risques tels que l'injection SQL.
Je pense que vous devez mettre la sous- subselect
entre parenthèses:
SqlCommand cmd = new SqlCommand("INSERT INTO Orders (order_date, paid, transact_status, customer_id) VALUES (GETDATE() ,'" + cost.ToSsortingng("c") + "' ,'Przyjęto do bazy', (SELECT customer_id FROM Customer WHERE login='" + username + "'))", con);