Click here to Skip to main content
15,895,142 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Error is:
Quote:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK__ImageRepo__User___1FCDBCEB". The conflict occurred in database "OIGTrial1", table "dbo.UserDetails", column 'EmailId'. The statement has been terminated.

................................................................................
database:
SQL
Create table UserDetails
(Id int Identity(1,1),
EmailId varchar(100) primary key,
PhoneNo bigint,
Country_Id int foreign key references Country(Id),
Gender_Id int foreign key references Gender(Id),
SecurityQuestion_Id int foreign key references SecurityQuestion(Id),
Answer varchar(max),
Username varchar(100) Unique,
Password varchar(50),
CreatedDate datetime,
Status bit
)
Create table ImageRepository
(Id int Identity(1,1) primary key,
User_Id varchar(100) foreign key references UserDetails(EmailId),
Name varchar(50),
Descrip varchar(Max),
Imagecategory_Id int foreign key references Imagecategory(Id),
Date datetime,
Path varchar(max),
Status bit,
ImageType_Id int foreign key references ImageType(Id)
)
Create proc Usp_UploadImage1(@User_Id varchar(100), @Name varchar(50), @Descrip varchar(100), @Imagecategory_Id int, @Date datetime, @Path varchar(max), @Status bit, @ImageType_Id int)
as begin
insert into ImageRepository values(@User_Id, @Name, @Descrip, @Imagecategory_Id, @Date, @Path, @Status, @ImageType_Id)
end
................................................................................
At login page:
C#
SqlCommand cmd1 = new SqlCommand("select EmailId from UserDetails where Username=@str",con1);
                cmd1.Parameters.Add(new SqlParameter("@str", SqlDbType.VarChar, 100));
                cmd1.Parameters["@str"].Value = TxtUserName.Text;
                string str = cmd1.ExecuteReader().ToString();
                Session["UserId"] = str;   //will this work?

at image upload page:
C#
protected void BtnUpload_Click(object sender, EventArgs e)
       {
           string FileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
           if (FileExt.ToLower() == ".jpg" || FileExt.ToLower() == ".jpeg" || FileExt.ToLower() == ".png" || FileExt.ToLower() == ".gif")
           {
               ss = Server.MapPath("~/Images/");
               FileUpload1.SaveAs(ss + FileUpload1.FileName);
               Image1.ImageUrl = "~/Images/" + FileUpload1.FileName;
           }
           else
           {
               Response.Write("Please Select an Image File..!");
           }

       }

       protected void BtnSubmit_Click(object sender, EventArgs e)
       {

           try
           {
               path = "~/Images/" + FileUpload1.FileName;
               int status = 1;
               int Image_Catagory = Convert.ToInt32(DrpImageCatagory.SelectedValue.ToString());
               int Image_type = Convert.ToInt32(RadioImageType.SelectedValue);
               con.Open();

               SqlCommand cmd1 = new SqlCommand("Usp_UploadImage1", con);
               cmd1.CommandType = CommandType.StoredProcedure;
               cmd1.Parameters.Add(new SqlParameter("@User_Id", SqlDbType.VarChar, 100));
               cmd1.Parameters["@User_Id"].Value = Session["UserId"].ToString();
               cmd1.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar, 100));
               cmd1.Parameters["@Name"].Value = TxtImageName.Text.Trim();
               cmd1.Parameters.Add(new SqlParameter("@Descrip", SqlDbType.VarChar, 100));
               cmd1.Parameters["@Descrip"].Value = TxtImageDescription.Text.Trim();
               cmd1.Parameters.Add(new SqlParameter("@Imagecategory_Id", SqlDbType.Int));
               cmd1.Parameters["@Imagecategory_Id"].Value = DrpImageCatagory.SelectedIndex;
               cmd1.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime));
               cmd1.Parameters["@Date"].Value = System.DateTime.Now;
               cmd1.Parameters.Add(new SqlParameter("@Path", SqlDbType.VarChar,200));
               cmd1.Parameters["@Path"].Value = path;
               cmd1.Parameters.Add(new SqlParameter("@Status", SqlDbType.Int));
               cmd1.Parameters["@Status"].Value = status;
               cmd1.Parameters.Add(new SqlParameter("@ImageType_Id", SqlDbType.Int));
               cmd1.Parameters["@ImageType_Id"].Value = RadioImageType.SelectedIndex;

               int rowcount = cmd1.ExecuteNonQuery();
               con.Close();
               if (rowcount > 0)
               {
               LblStatus.Text = "Data Inserted Successful..!";
               }
               else
               {
                   LblStatus.Text = "Something went Wrong !";
               }
           }
           catch (Exception ex)
           {
               Response.Write(ex.Message);
           }
           finally
           {
               con.Close();
           }
       }
Posted
Updated 18-Feb-15 1:34am
v2
Comments
CHill60 18-Feb-15 7:35am    
Where was this error generated?
Satpal Lakhera 18-Feb-15 7:41am    
all i wanted to do was to get user_id from stored procedure at login page and store it in session variable, so that i could perform further operations by using this.
but failed, as no appropriate string stored in it(user_id).
CHill60 18-Feb-15 8:19am    
That didn't answer my question
Satpal Lakhera 19-Feb-15 0:14am    
i've commented that session["User_Id"] is storing "system.data.sqlclient.sqldatareader" not the original user id that is someone@something.com
Satpal Lakhera 19-Feb-15 0:18am    
error is in the string str & session["User_Id"] at "login page" is storing inaccurate value

Clearly, your RadioImageType.SelectedIndex values do not match the id column values in your ImageType table: so SQL is complaining that it can't do the insert as it would violate data integrity - i.e. the data would have ID values that didn't exist in the ImageType table.

Check your values: when you report the problem add some data which reports the ID you are writing and check it against the table content.
 
Share this answer
 
Comments
Satpal Lakhera 18-Feb-15 7:51am    
nopes, they work correctly.
thing is that session["User_Id"] is storing "system.data.sqlclient.sqldatareader" not the original user id that is someone@something.com
Satpal Lakhera 18-Feb-15 10:21am    
guys help
got it..

At login page,

Last two lines:

string str = cmd1.ExecuteReader().ToString();
Session["UserId"] = str;

must be replaced by:

string str = cmd1.ExecuteScalar().ToString();
Session["User_Id"] = str;
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900