当页面加载Session();时插入;

本文关键字:插入 Session 加载 | 更新日期: 2023-09-27 18:21:45

当页面打开时,我想在这个页面中插入3个值,这些值在这个表单之前是流派、艺术家、唱片公司的主键,并且将是外键,到这个表中,这个表就是专辑。

我的桌子是

相册---------------

白蛋白主键

发布日期

RecordCompanyID外键

ArtistID外键

GenreID外键

唱片公司------------------------------

RecodCompanyID Priamry密钥

RecordCompanyName

流派-----------------------

GenreID主密钥

流派

艺术家--------------------------------------------

ArtistID主键

ArtistName

namespace WebApplication6
{
    public partial class WebForm15 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["genreid"] != null && Session["artistid"] != null && Session["recordcompanyid"] != null)
            {
                Label7.Visible = true;
                Label7.Text = "Welcome : " + Session["genreid"] + "Welcome : " + Session["artistid"] + "Welcome : " + Session["recordcompanyid"];
            }
            else
            {
                Response.Redirect("~/BenEManagementGenre.aspx");
            }

            if (!IsPostBack)
            {



                String Artists = System.Configuration.ConfigurationManager.ConnectionStrings["FleetManagementConnectionString"].ConnectionString;
                System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(Artists);
                int artistid = Convert.ToInt32(Session["artistid"]);
                int genreid = Convert.ToInt32(Session["genreid"]);
                int recodcompanyid = Convert.ToInt32(Session["recodcompanyid"]);

                SqlCommand command = new SqlCommand(@"INSERT INTO [dbo].[Albums] (GenreID,ArtistID,RecordCompanyID)
               VALUES (@Genre, @Artist,@RecordCompany);" + "select scope_Identity() as ID", con);

                command.Parameters.AddWithValue("@Genre", artistid);
                command.Parameters.AddWithValue("@Artist", genreid);
                command.Parameters.AddWithValue("@RecordCompany", recodcompanyid);
                con.Open();
                SqlDataReader rd = command.ExecuteReader();
                int ID = -1;

                while (rd.Read())
                {
                    ID = int.Parse(rd["ID"].ToString());
                }
                rd.Close();
                con.Close();
                Session.Add("albumid", ID);
            }

错误显示

INSERT语句与FOREIGN KEY约束冲突"fk_AlbumsRecordCompanyID"。数据库中发生冲突"KazuTest",表"dbo.RecordCompanies",列"RecordCompanyID"。

在我的理论中,当我打开页面时,我插入了3个值,这些值是外键,所以我已经插入了外键。那么为什么会出现这个错误呢?

当页面加载Session();时插入;

看看如何添加参数:

command.Parameters.AddWithValue("@Genre", artistid);
command.Parameters.AddWithValue("@Artist", genreid);
command.Parameters.AddWithValue("@RecordCompany", recodcompanyid);

您将ArtistId放在GenreID列中,将GenreID放在ArtistId列中。通过这种方式,外键约束不受尊重。

正确的版本应该是:

command.Parameters.AddWithValue("@Genre", genreid);
command.Parameters.AddWithValue("@Artist", artistid);
command.Parameters.AddWithValue("@RecordCompany", recodcompanyid);