当页面加载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个值,这些值是外键,所以我已经插入了外键。那么为什么会出现这个错误呢?
看看如何添加参数:
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);