使用SQL Server存储过程的C#ASPNET

时间:2019-07-12 00:15:51

标签: c# asp.net sql-server

我当前正在使用存储过程,但是在更改内容时遇到了一些问题,直到我添加CPF字段后,它才真正起作用。总是在尝试注册新用户时出现错误:

  

过程或函数指定的参数过多

我有此程序可以注册用户:

CREATE PROC FI_SP_IncClienteV2
    @NOME          VARCHAR (50) ,
    @SOBRENOME     VARCHAR (255),
    @CPF           VARCHAR(15)  ,
    @NACIONALIDADE VARCHAR (50) ,
    @CEP           VARCHAR (9)  ,
    @ESTADO        VARCHAR (2)  ,
    @CIDADE        VARCHAR (50) ,
    @LOGRADOURO    VARCHAR (500),
    @EMAIL         VARCHAR (2079),
    @TELEFONE      VARCHAR (15) 
AS
BEGIN
    INSERT INTO CLIENTES (NOME, SOBRENOME, CPF, NACIONALIDADE, CEP, ESTADO, CIDADE, LOGRADOURO, EMAIL, TELEFONE) 
      VALUES (@NOME, @SOBRENOME, @CPF, @NACIONALIDADE, @CEP, @ESTADO, @CIDADE, @LOGRADOURO, @EMAIL, @TELEFONE)

    SELECT SCOPE_IDENTITY()
END

这段代码负责运行该过程,它是从另一个类继承的:

internal long Incluir(DML.Cliente cliente)
{
    List<System.Data.SqlClient.SqlParameter> parametros = new List<System.Data.SqlClient.SqlParameter>();

    parametros.Add(new System.Data.SqlClient.SqlParameter("Nome", cliente.Nome));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Sobrenome", cliente.Sobrenome));
    parametros.Add(new System.Data.SqlClient.SqlParameter("CPF", cliente.CPF));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Nacionalidade", cliente.Nacionalidade));
    parametros.Add(new System.Data.SqlClient.SqlParameter("CEP", cliente.CEP));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Estado", cliente.Estado));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Cidade", cliente.Cidade));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Logradouro", cliente.Logradouro));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Email", cliente.Email));
    parametros.Add(new System.Data.SqlClient.SqlParameter("Telefone", cliente.Telefone));

    DataSet ds = base.Consultar("FI_SP_IncClienteV2", parametros);
    long ret = 0;
    if (ds.Tables[0].Rows.Count > 0)
        long.TryParse(ds.Tables[0].Rows[0][0].ToString(), out ret);

    return ret;
}

internal DataSet Consultar(string NomeProcedure, List<SqlParameter> parametros)
{
    SqlCommand comando = new SqlCommand();
    SqlConnection conexao = new SqlConnection(stringDeConexao);

    comando.Connection = conexao;
    comando.CommandType = System.Data.CommandType.StoredProcedure;
    comando.CommandText = NomeProcedure;
    foreach (var item in parametros)
        comando.Parameters.Add(item);

    SqlDataAdapter adapter = new SqlDataAdapter(comando);
    DataSet ds = new DataSet();
    conexao.Open();

    try
    {               
        adapter.Fill(ds);
    }
    finally
    {
        conexao.Close();
    }

    return ds;
}

1 个答案:

答案 0 :(得分:0)

因此,我按照Chetan Ranpariya的建议遍历了数据库中的所有内容,并且我注意到,即使我对存储过程进行了更改,也没有在数据库上对其进行更新。