2012-07-29 65 views
-1

当我尝试使用上一步的TextBox控件的值时,ASP.NET向导中出现此错误。在向导中保存“步骤”中的值ASP.NET

错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Contact_Emp". 
The conflict occurred in database "KKSTech", table "dbo.Emp", column 'EmpID'. 

是它访问的不同步骤控制的价值观出了问题?

+0

由于外键值不正确,此问题即将到来。你调试了代码并得到了什么文本框? – 2012-07-29 06:25:16

+0

步骤1中的TextBox1正在插入dbo.Emp(EmpID PK),但未插入dbo.contacts,这是一个FK .. – Girish 2012-07-29 06:50:42

+0

[如何在ASP.NET向导中的步骤之间存储值?](http: //stackoverflow.com/questions/11690960/how-to-store-values-between-steps-in-asp-net-wizard) – Aristos 2012-07-29 07:20:55

回答

0

外键确保它在该列中的值不在被引用表的主键列中。

在你的情况,你将EmpIDcontact表中不存在的EmpIDEmp表的引用表。

+0

EmpID正在插入到dbo.Emp表中,它是一个PK ..我用单独的类来插入Employees的细节,但同样没有插入到其他表中。 – Girish 2012-07-29 06:49:40

+0

您是否检查过第1步中的TextBox1.Text在插入联系人表时是否具有相同的值..... – 2012-07-29 07:02:33

+0

否我没有检查过,因为在向导中我了解到值不会被遗忘。我现在该怎么做?我完全困惑.. :( – Girish 2012-07-29 07:05:38

1

这是第一类插入到dbo.Emp表

public void InsertInfo() 
     { 
      String KKStech = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True"; 
      SqlConnection conn = new SqlConnection(KKStech); 
      String insertstring = @"insert into Emp (EmpID, FirstName, LastName, MiddleName, Mob1, Mob2, Phone, Email1, Email2, EmpDesc) 
          values (@EmpID, @FirstName, @LastName, @MiddleName, @Mob1, @Mob2)"; 
      SqlCommand cmd = new SqlCommand(insertstring, conn); 
      cmd.CommandText = insertstring; 
      cmd.CommandType = CommandType.Text; 

      try 
      { 
       conn.Open(); 
       cmd.Parameters.AddWithValue("@EmpID", TextBox1.Text); 
       cmd.Parameters.AddWithValue("@FirstName", TextBox2.Text); 
       cmd.Parameters.AddWithValue("@LastName", TextBox3.Text); 
       cmd.Parameters.AddWithValue("@MiddleName", TextBox4.Text); 
       cmd.Parameters.AddWithValue("@Mob1", TextBox5.Text); 
       cmd.Parameters.AddWithValue("@Mob2", TextBox6.Text); 
       cmd.ExecuteNonQuery(); 
      } 

      finally 
      { 
       conn.Close(); 
      } 
     } 

而这是一个其中I“米插入其中的EmpID是FK

public void Insertaddress() 
{ 
    String KKStech = @"Data Source=USER-PC\SQLEXPRESS;Initial Catalog=KKSTech;Integrated Security=True"; 
    SqlConnection conn = new SqlConnection(KKStech); 
    String str = @"insert into Contact (Addressline1, Addressline2, CityID, EmpID) 
           values(@Addressline1, @Addressline2, @CityID, @EmpID)"; 
    SqlCommand cmd = new SqlCommand(str, conn); 
    cmd.CommandText = str; 
    cmd.CommandType = CommandType.Text; 

    try 
    { 
     conn.Open(); 
     cmd.Parameters.AddWithValue("@Addressline1", TextBox15.Text); 
     cmd.Parameters.AddWithValue("@Addressline2", TextBox17.Text); 
     cmd.Parameters.AddWithValue("@CityID", DropDownList2.SelectedValue); 
     cmd.Parameters.AddWithValue("@EmpID", TextBox1.Text); 
     cmd.ExecuteNonQuery(); 
    } 
    catch (System.Data.SqlClient.SqlException ex) 
    { 
     string msg = "Insert Error:"; 
     msg += ex.Message; 
     throw new Exception(msg); 
    } 

    finally 
    { 
     conn.Close(); 
    } 

} 

这是表我的问题。