2017-10-19 85 views
0

我试图将数据插入到两个不同的表中。
一个是(father_new),另一个是(lab5_students),但是数据被插入到lab5_student的表中,并且不会显示在father_new中。
我已经使用存储过程,我不知道我在哪里做错了。数据未插入到一个表(father_new)中,但出现在另一个表中(lab5_students)

这是我的代码保存父亲的纪录

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(tbox_Fname1.Text) == true || String.IsNullOrEmpty(tbox_fdob.Text) == true || String.IsNullOrEmpty(tbox_fcnic.Text) == true) 
    { 
     MessageBox.Show("Name,DOB,Cnic fields are compulsary to fill"); 
    } 

    { 
     SqlCommand cmd = new SqlCommand("Lab5task2", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@Action", SqlDbType.NVarChar).Value = btn_Psubmit.Text; 
     cmd.Parameters.Add("@FName", SqlDbType.NVarChar).Value = tbox_Fname1.Text; 
     cmd.Parameters.Add("@FNum", SqlDbType.NChar).Value = tbox_fnum.Text; 
     cmd.Parameters.Add("@FOccup", SqlDbType.NVarChar).Value = tbox_occupation.Text; 
     cmd.Parameters.Add("@FEmail", SqlDbType.NVarChar).Value = tbox_femail.Text; 
     cmd.Parameters.Add("@FDOB", SqlDbType.DateTime).Value = DateTime.ParseExact(tbox_fdob.Text, "d-M-yyyy", null); 
     cmd.Parameters.Add("@Foffic_Num", SqlDbType.NChar).Value = tbox_offnum.Text; 
     cmd.Parameters.Add("@FAge", SqlDbType.NChar).Value = tbox_fage.Text; 
     cmd.Parameters.Add("@FState", SqlDbType.NVarChar).Value = tbox_Fstate.Text; 
     cmd.Parameters.Add("@FIncome", SqlDbType.NChar).Value = tbox_fincome.Text; 
     cmd.Parameters.Add("@FCnic", SqlDbType.NChar).Value = tbox_fcnic.Text; 
           conn.Open(); 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 

    } 
} 

这是为了节省学生的记录

private void btn_Ssubmit_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(tbox_sname.Text) == true || String.IsNullOrEmpty(tbox_sfname.Text) == true || String.IsNullOrEmpty(tbox_sid.Text) == true) 
    { 
     MessageBox.Show("Name,Father's Name and Id fields are compulsary to fill"); 
    } 
    else 
    { 
     SqlCommand cmd = new SqlCommand("Lab5task2", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@Action", SqlDbType.NVarChar).Value = btn_Ssubmit.Text; 
     cmd.Parameters.Add("@Sname", SqlDbType.NVarChar).Value = tbox_sname.Text; 
     cmd.Parameters.Add("@Sid", SqlDbType.NChar).Value = tbox_sid.Text; 
     cmd.Parameters.Add("@Sfather_name", SqlDbType.NVarChar).Value = tbox_sfname.Text; 
     cmd.Parameters.Add("@Sphone", SqlDbType.NVarChar).Value = tbox_sphone.Text; 
     cmd.Parameters.Add("@Semail", SqlDbType.NVarChar).Value = tbox_semail.Text; 
     cmd.Parameters.Add("@Saddress", SqlDbType.NVarChar).Value = tbox_saddress.Text; 
     cmd.Parameters.Add("@Sage", SqlDbType.NVarChar).Value = tbox_sage.Text; 

     if (rbtn_female.Text == "Female") 
     { 
      cmd.Parameters.Add("@Sgender", SqlDbType.NVarChar).Value = rbtn_female.Text; 
     } 
     else if (rbtn_male.Text == "Male") 
     { 
      cmd.Parameters.Add("@Sgender", SqlDbType.NVarChar).Value = rbtn_male.Text; 
     } 

     cmd.Parameters.Add("@Ssemester", SqlDbType.NVarChar).Value =  tbox_ssemester.Text; 
     cmd.Parameters.Add("@Suniversity", SqlDbType.NVarChar).Value = tbox_suni.Text; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 

这是我的我的存储过程

create procedure [dbo].[lab5task2] 
(
     -- For Parent data 
     @FName nvarchar(50)=null, 
     @FNum nchar(50) =null, 
     @FOccup nvarchar(50)=null, 
     @FEmail nvarchar(50)=null, 
     @FDOB datetime=null, 
     @Foffic_Num nchar(50)=null, 
     @FAge nchar(50)=null, 
     @FState nvarchar(50)=null, 
     @FIncome nchar(50)=null, 
     @FCnic nchar(50)=null, 
     -- For Student data 
     @Sname nvarchar(50)=null, 
     @Sid nchar(50)=null, 
     @Sfather_name nvarchar(50)=null, 
     @Sphone nvarchar(50)=null, 
     @Semail nvarchar(50)=null, 
     @Saddress nvarchar(50)=null, 
     @Sage nvarchar(50)=null, 
     @Sgender nvarchar(50)=null, 
     @Ssemester nchar(50)=null, 
     @Suniversity nvarchar(50)=null, 
     @Action nvarchar(50)=null 
) 

continued procedure

+0

按钮_btn_Psubmit_(包括大写和小写,因为在SP代码中有所不同)的文本究竟是什么 – Steve

+0

Steve在父表的“保存数据”过程中与文本完全相同。问题出在“全部删除”。我没有注意到,如果声明感谢@mjwills –

回答

0

问题出在你的存储过程的这一部分。

if @Action = 'Delete All' 
delete from lab5_students; 
delete from father_new; 

它不会做你认为它做的事。我嫌疑人你认为if适用于两个的删除线。但它只适用于第一个。你是切实做好:

if @Action = 'Delete All' 
    delete from lab5_students; 

delete from father_new; // i.e. always run this 

因此,您需要使用BEGIN ... END

if @Action = 'Delete All' 
BEGIN 
    delete from lab5_students; 
    delete from father_new; 
END 

这将确保第二DELETE执行只有如果@Action是 '全部删除'。

+0

是的,它会有所帮助:D代码运行非常完美,非常感谢您的支持。上帝祝福你 –

相关问题