Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sqlparameter应该被指定为异常,如果我这样指定,就会违反主键约束异常_C#_Asp.net_Sql Server 2008 - Fatal编程技术网

C# Sqlparameter应该被指定为异常,如果我这样指定,就会违反主键约束异常

C# Sqlparameter应该被指定为异常,如果我这样指定,就会违反主键约束异常,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我必须插入字段值,但不能插入作为主键的id并设置标识(1,1)。存储过程也添加在底部 protected void save_click(object sender, EventArgs e) { con = new SqlConnection(s); con.Open(); cmd = new SqlCommand("employeedtl", con); cmd.CommandType = CommandType.StoredP

我必须插入字段值,但不能插入作为主键的id并设置标识(1,1)。存储过程也添加在底部

protected void save_click(object sender, EventArgs e)
{
        con = new SqlConnection(s);
        con.Open();
        cmd = new SqlCommand("employeedtl", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@empname", SqlDbType.VarChar).Value =      TextBox1.Text;
        cmd.Parameters.Add("@empid", SqlDbType.Int).Value = int.Parse(TextBox2.Text);
        cmd.Parameters.Add("@empage", SqlDbType.Int).Value = int.Parse(TextBox3.Text);
        cmd.Parameters.Add("@empaddress", SqlDbType.VarChar).Value = TextBox4.Text;
        cmd.Parameters.Add("@empjoindate", SqlDbType.VarChar).Value = TextBox5.Text;
        cmd.Parameters.Add("@empproject", SqlDbType.VarChar).Value = TextBox6.Text;
        cmd.Parameters.Add("@empmobile", SqlDbType.BigInt).Value = Int64.Parse(TextBox7.Text);
        cmd.Parameters.Add("@empemail", SqlDbType.VarChar).Value = TextBox8.Text;
        cmd.Parameters.Add("@select", SqlDbType.Int).Value = 1;
        cmd.Parameters.Add("@id"); 
        cmd.ExecuteNonQuery();
        Label1.Text = "Inserted Successfully";
        con.Close();
        bindGrid(GridView1);

}

ALTER procedure [dbo].[employeedtl](@select int,@empid int,@empname varchar(50),@empage int,@empaddress varchar(max),@empjoindate varchar(50),@empproject varchar(50),@empmobile bigint,@empemail varchar(max))
    as
    begin
    if @select=1
    begin
    if Exists(select * from EmployeeDB where Empid=@empid)      
    begin
     update EmployeeDB set [EmpId]=@empid,[EmpName]=@empname,[EmpAge]=@empage,[EmpAddress]=@empaddress,[EmpJoin]=@empjoindate,[EmpProj]=@empproject,[EmpMobile]=@empmobile,[EmpEmail]=@empemail where Empid=@empid
     end
     else 
     begin
     insert into EmployeeDB(EmpId,EmpName,EmpAge,EmpJoin,EmpAddress,EmpProj,EmpMobile,EmpEmail) values(@empid,@empname,@empage,@empaddress,@empjoindate,@empproject,@empmobile,@empemail)
     end
     end
     else if @select=2
     begin
     delete from EmployeeDB where EmpId=@empid
     end
    end

更改存储过程

// SQL Server stored procedure
alter storedprocedure employeedtl (
    @id int = null,
    @empname nvarchar(50) = null,
    .
    .
    .
     )

// in .Net remove this line
cmd.Parameters.Add("@id"); 

更改存储过程

// SQL Server stored procedure
alter storedprocedure employeedtl (
    @id int = null,
    @empname nvarchar(50) = null,
    .
    .
    .
     )

// in .Net remove this line
cmd.Parameters.Add("@id"); 
  • cmd.Parameters.Add(“@id”)//删除此
  • 删除
    ALTER过程dbo.Employeetl中的@id
  • 删除insert
    insert INTO EmployeeDB(EmpName,…)中的id
  • cmd.Parameters.Add(“@id”)//删除此
  • 删除
    ALTER过程dbo.Employeetl中的@id
  • 删除insert
    insert INTO EmployeeDB(EmpName,…)中的id
  • 需要两个改变

  • 将值传递给代码中的
    @id
    参数

    cmd.Parameters.Add("@id", SqlDbType.Int).Value = xxx; 
    
  • 更改存储过程以更新INSERT命令

    INSERT INTO EMPTable(id,empname,empid,empage,empaddress,empjoindate,empproject,empm‌​obile,empemail,selec‌​t) values (@empname,@empid,@empage,@empaddress,@empjoindate,@empprojec‌​t,@empmobile,@empema‌​il,@select)
                  -------^
    
    从INSERT中删除此ID列及其值
    @ID

  • 需要两个改变

  • 将值传递给代码中的
    @id
    参数

    cmd.Parameters.Add("@id", SqlDbType.Int).Value = xxx; 
    
  • 更改存储过程以更新INSERT命令

    INSERT INTO EMPTable(id,empname,empid,empage,empaddress,empjoindate,empproject,empm‌​obile,empemail,selec‌​t) values (@empname,@empid,@empage,@empaddress,@empjoindate,@empprojec‌​t,@empmobile,@empema‌​il,@select)
                  -------^
    
    从INSERT中删除此ID列及其值
    @ID


  • 无法将值NULL插入表“keshav.dbo.EmployeeDB”的列“id”中;列不允许空值。将finsert插入keshav.dbo.EmployeeDB(empname、empid、empage、empaddress、empjoindate、empproject、empmobile、empMail、select)值(@empname、@empid、@empage、@empaddress、@empjoindate、@empproject、@empmobile、@select)从插入查询中删除自动递增id的id不能将值NULL插入列“id”,表“keshav.dbo.EmployeeDB”;列不允许空值。将finsert插入keshav.dbo.EmployeeDB(empname、empid、empage、empaddress、empjoindate、empproject、empmobile、empMail、select)值(@empname、@empid、@empage、@empaddress、@empjoindate、@empproject、@empmobile、@select)从id的insert queryremove参数中删除作为自动增量id的id,并相应地在insert queryPost上公布问题中存储过程的代码text@PanagiotisKanavosdoneremove id的参数,并相应地在insert queryPost上插入问题中存储过程的代码text@PanagiotisKanavos完成