当前位置: 首页 > 面试题库 >

使用具有外键的表将数据从asp.net页插入到我的数据库中

充子航
2023-03-14
问题内容

我是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正常工作,但我无法编写任何东西来设置它们具有外键的order表和orderdetails表另一张桌子


问题答案:

插入父表时,应将scope_identity()插入插入命令的末尾。并且您应该使用execute标量。范围标识通过执行标量为您提供插入的ID。之后,您可以使用此父ID插入子项。



 类似资料:
  • 我做了2个表第二个表由外键组成,它引用了第一个表的主键第二个表由3个字段组成id(主键),顺序号,fid我使用以下命令 sql语法中的错误

  • 下面是我的代码和我到目前为止所做的事情。 如何在单击#OrderSave按钮后使用ajax将表中的所有数据插入数据库? $(“#code”).bind(“blur keypress”,function(event){event.preventdefault();if(event.keycode===13 event.type=='blur'){var vals=$('#code').val();$

  • 问题内容: 我有一张表格,列出了来自特定网站的评论数量,如下所示: 我还有另一个表,列出了所有站点,例如从1到10 使用以下代码,我可以找出上个月缺少哪些站点条目: 生产: 我希望能够使用一些默认值(即“ 0”)将查询中列出的缺失网站插入到注释表中 问题是,我如何更新/插入表/值? 干杯, 背风处 问题答案:

  • 我在Postgres中有两个表<code>foo 当我尝试使用此命令将数据从 复制到 时: 我得到一个错误: 错误:重复的键值违反了唯一约束“bar_pkey” 详细信息:键(id)=(1)已存在。 当表

  • 我创建了一个模型使用在sql炼金术如下所示。 然后我将同一个模型移植到Snowflake数据库。 该模型有一个字段,声明为和。当我尝试插入数据到表使用雪花控制台。我必须提供,否则它不会插入数据并返回错误。 查询(成功执行,其中提供了)- 查询(当我完全忽略列时成功执行)- 查询(执行失败,其中为空)- 它返回了一个错误- 此方法的任务是将数据插入上述数据库表中。 来自SQLAlChemy的错误-

  • 我正在探索DataBricks Delta表及其时间旅行/时间特性。我有一些过去发生的事件数据。我正在尝试将它们插入delta表,并能够使用数据中的时间戳而不是实际的插入时间进行时间旅行。 我的事件中有一个日期/时间列。我将其重命名为“时间戳”,但它仍然不起作用。 我的 csv 数据如下所示:(数据显示 id=1000 的单个案例发生了 5 次更新) 我使用这些命令来创建增量表: 我有两个问题: