E M C,
Veo que agregas un valor de parámetro -a la colección Parameters- según el contenido de la variable, por tanto debes implementar parámetros opcionales en el procedimiento almacenado:
CREATE PROCEDURE dbo.InsertarCuenta
@par1 varchar(4000) = NULL,
@par2 varchar(4000) = NULL,
@par3 varchar(4000) = NULL,
@par4 varchar(4000) = NULL,
@par5 varchar(4000) = NULL,
@par6 varchar(4000) = NULL,
@par7 datetime = NULL
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO CUENTA
(FirstName, LastName, Email, [Password], Zip, UserStatus, CreateDate)
VALUES
(@par1, @par2, @par3, @par4, @par5, @par6, @par7);
END
public int InsertUpdateValues(String SQL, String par1, String par2, String par3, String par4, String par5, String par6, DateTime par7)
{
try
{
SqlCommand comando = new SqlCommand("InsertarCuenta", Conexion1);
comando.CommandType = CommandType.StoredProcedure;
comando.Connection.Open();
if (par1 != "") comando.Parameters.AddWithValue("@par1", par1);
if (par2 != "") comando.Parameters.AddWithValue("@par2", par2);
if (par3 != "") comando.Parameters.AddWithValue("@par3", par3);
if (par4 != "") comando.Parameters.AddWithValue("@par4", par4);
if (par5 != "") comando.Parameters.AddWithValue("@par5", par5);
if (par6 != "") comando.Parameters.AddWithValue("@par6", par6);
if (par7 != Convert .ToDateTime ("01/01/1900")) comando.Parameters.AddWithValue("@par7", par7);
int rowsAffected = comando.ExecuteNonQuery();
Conexion1.Close();
return rowsAffected;
}
catch (Exception ex) { Error = ex.ToString(); }
}
Te recomiendo que la conexión la realices dentro del método, no es correcto la definición de conexiones de ámbito de clase o -peor aún- de ámbito "global".
Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.