Using a dataset may help but one thing you could do is move the creation of the connection, stored proc and all the parameters outside of that function - currently everytime you execute the function you are opening a new DB connection, creating the command, creating each parameter, then doing the insert and throwing all the objects away.