c# - Enable to insert data into SQL Server using a stored procedure -


i trying below code inserting records database via stored procedure.

first time loop insert record after second time shows me error on executenonquery:

procedure or function sp_functional_title_master_insert has many arguments specified.

please help.

public int insertdata(datatable objlst)   {     string query = "sp_functional_title_master_insert";      try     {         sqlcommand cmdcommand = new sqlcommand(query, connectionclass.openconnection());          foreach (datarow dr in objlst.rows)         {             cmdcommand.commandtype = commandtype.storedprocedure;             cmdcommand.parameters.addwithvalue("@code",convert.toint64( dr["code"]));             cmdcommand.parameters.addwithvalue("@designation", dr["designation"]);             cmdcommand.parameters.addwithvalue("@group", dr["group"]);              cmdcommand.executenonquery();             issavedcount += 1;         }     }     catch (exception ex)     {         throw ex;     }         {         connectionclass.closeconnection();     }      return issavedcount; } 

this "fix it".

        foreach (datarow dr in objlst.rows)         {             cmdcommand.parameters.clear(); 

but you'd better off doing this

(create parameters outside loop , set parameters inside loop)

command.parameters.add(new sqlparameter("@code", sqldbtype.bigint)); /* fix datatype here */ command.parameters.add(new sqlparameter("@designation", sqldbtype.varchar, 128)); /* fix datatype , optional "size" here */ command.parameters.add(new sqlparameter("@group", sqldbtype.varchar, 128)); /* fix datatype , optional "size" here */    foreach (datarow dr in objlst.rows)   {     command.parameters["@code"].value = convert.toint64( dr["code"]);     command.parameters["@designation"].value = dr["designation"];     command.parameters["@group"].value = dr["group"];     command.executenonquery();   } 

Comments