从asp.net页面插入数据到我的数据库与表有外键

本文关键字:数据库 我的 net asp 数据 插入 | 更新日期: 2023-09-27 18:08:15

我是一个初学者asp.net程序员和我的项目是网上购物类我有一些问题

我有4个表,它们之间有一些外键…

CREATE TABLE [dbo].[orderdetails] 
(
    [orderid] INT NOT NULL,
    [classid] INT NOT NULL,
   CONSTRAINT [PK_orderdetails] 
      PRIMARY KEY CLUSTERED ([orderid] ASC, [classid] ASC)
);
CREATE TABLE [dbo].[order] 
(
    [orderid]    INT IDENTITY (300, 1) NOT NULL,
    [customerid] INT NOT NULL,
    CONSTRAINT [PK_order] 
       PRIMARY KEY CLUSTERED ([orderid] ASC)
);
CREATE TABLE [dbo].[customer] 
(
    [customerid] INT IDENTITY (200, 1) NOT NULL,
    [firstname]  NVARCHAR (50) NOT NULL,
    [lastname]   NVARCHAR (50) NOT NULL,
    [phone]      INT           NOT NULL,
    CONSTRAINT [PK_Table_1] 
       PRIMARY KEY CLUSTERED ([customerid] ASC)
);
CREATE TABLE [dbo].[class] 
(
    [classid]    INT IDENTITY (100, 1) NOT NULL,
    [numofclass] INT NOT NULL,
    [numofstud]  INT NOT NULL,
    [totalprice] INT NOT NULL,
    CONSTRAINT [PK_class] 
       PRIMARY KEY CLUSTERED ([classid] ASC)
);
FK_orderdetails_order
FK_order_customer
FK_orderdetails_class

我有三个页面,在第一页我传递一些数据到另一个页面,在第二页我设置我的数据到我的数据库。

首页代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;  
public partial class _Default : System.Web.UI.Page
{
       static int totalprice = 0;
       protected void Page_Load(object sender, EventArgs e)
       {
           int studprice = Convert.ToInt32(Numofstud.SelectedValue) * 6;
           int classprice = Convert.ToInt32(Numofclass.SelectedValue) * 190;
           totalprice = studprice + classprice;
           lblTotalprice.Text = string.Format("{0}", totalprice);
       }
       protected void Numofstud_SelectedIndexChanged(object sender, EventArgs e)
       {
           int studprice = Convert.ToInt32(Numofstud.SelectedValue) * 6;
           int classprice = Convert.ToInt32(Numofclass.SelectedValue) * 190;
           totalprice = studprice + classprice;
           lblTotalprice.Text = string.Format("{0}", totalprice);
       }
       protected void Numofclass_SelectedIndexChanged(object sender, EventArgs e)
       {
                int studprice = Convert.ToInt32(Numofstud.SelectedValue) * 6;
                int classprice = Convert.ToInt32(Numofclass.SelectedValue) * 190;
                totalprice = studprice + classprice;
                lblTotalprice.Text = string.Format("{0}", totalprice);
            }
            protected void Registerbtn_Click(object sender, EventArgs e)
            {
                Session["Numofclass"] = Numofclass.SelectedItem.Value;
                Session["totalprice"] = totalprice;
                Session["Numofstud"] = Numofstud.SelectedItem.Value;
                Response.Redirect("account.aspx");
            }  
        }

第二页代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;  

public partial class account : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void buybtn_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["miztahrirtest2DB"].ToString());
        SqlCommand cmd = new SqlCommand("insert into customer (firstname, lastname, phone) values (@firstname, @lastname, @phone)", con);
        cmd.Parameters.AddWithValue("firstname", firstnametxt.Text);
        cmd.Parameters.AddWithValue("lastname", lastnametxt.Text);
        cmd.Parameters.AddWithValue("phone", phonetxt.Text);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        SqlCommand cmd2 = new SqlCommand("insert into class (numofstud, numofclass, totalprice) values (@numofstud, @numofclass, @totalprice)", con);
        cmd2.Parameters.AddWithValue("numofclass", Session["Numofclass"]);
        cmd2.Parameters.AddWithValue("numofstud", Session["Numofstud"]);
        cmd2.Parameters.AddWithValue("totalprice", Session["totalprice"]);
        con.Open();
        cmd2.ExecuteNonQuery();
        con.Close();
        SqlCommand cmd3 = new SqlCommand("insert into order ....
        Response.Redirect("bank.aspx");
    }
}

我的问题是,我不知道如何插入值到表有外键和主键。cmd1和cmd2工作正常,但我不能写一些东西来设置订单表和订单细节表,他们有一个

从asp.net页面插入数据到我的数据库与表有外键

插入父表时,应该将scope_identity()放在插入命令的末尾。你应该使用execute scalar。作用域标识通过执行标量给您插入的id。然后,您可以插入具有此父id的子项目。