none
usando params IDbDataParameter[] parameters RRS feed

  • Pergunta

  •  

    Galera, quero criar um método executeNonQuery, e nesse método quero enviar Parametros para conctenar no sql, ex:

     

    void ExeuteNonQuery(string commandText, params IDbDataParameter[] parameters..);

    {

    SqlConnection cn = new SqlConnection(this.ConnectionString);

    SqlCommand cmd = new SqlCommand(commandText, cn);

     

    cmd.CommandType = commandType;

    cmd.Connection = cn;

    }

     

    como eu faço pra enviar os params?

     

    No caso eu envio um array de parametros? e dai tenho que criar outo método pra setar esses parametros?...

    Não achei muita coisa a respeito..se alguém puder ajudar..

     

    abraços..

    quinta-feira, 2 de agosto de 2007 17:44

Respostas

  • Boas,

    Voce pode criar uma coleção de parametros usando o conceito de Generics, e depois passar essa coleção para sua função ExecuteNonQuery. Veja, no exemplo que fiz, como ficaria:

     

    // Cria a coleção para armazenar os parametros

    Dictionary<Int32, SqlParameter> Parametros = new Dictionary<Int32, SqlParameter>();

     

    // Id do Usuario

    SqlParameter ParamID = new SqlParameter();

    ParamID.ParameterName = "pID";

    ParamID.SqlDbType = SqlDbType.Int;

    ParamID.Direction = ParameterDirection.Input;

    ParamID.Size = 5;

    ParamID.Value = 1010;

     

    // Nome do Usuario

    SqlParameter ParamName = new SqlParameter();

    ParamName.ParameterName = "pNomeUsuario";

    ParamName.SqlDbType = SqlDbType.NVarChar;

    ParamName.Direction = ParameterDirection.Input;

    ParamID.Size = 15;

    ParamName.Value = "DanielBraga";

     

    // Adiciona os parametros na coleção passando a chave

    Parametros.Add(0, ParamID);

    Parametros.Add(1, ParamName);

    ExeuteNonQuery("suaStoredProcedure", Parametros);

     

     

    Depois, a sua função ExecuteNonQuery:

    private void ExeuteNonQuery(string commandText, Dictionary<Int32, SqlParameter> ColecaoParametros)

    {

    SqlConnection cn = new SqlConnection("suaConnectionString");

    SqlCommand cmd = new SqlCommand(commandText, cn);

    for (int i = 0; i < ColecaoParametros.Count; i++)
    {

    cmd.Parameters.Add(ColecaoParametros[ i ]);

    }

     

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Connection = cn;

    }

     

    Obs: Não estou levando em consideração tratamento de erros, performance e funcionalidade, apenas um exemplo mostrando a forma de uso.

     

    Espero que ajude!

    sexta-feira, 3 de agosto de 2007 13:52

Todas as Respostas

  • Boas,

    Voce pode criar uma coleção de parametros usando o conceito de Generics, e depois passar essa coleção para sua função ExecuteNonQuery. Veja, no exemplo que fiz, como ficaria:

     

    // Cria a coleção para armazenar os parametros

    Dictionary<Int32, SqlParameter> Parametros = new Dictionary<Int32, SqlParameter>();

     

    // Id do Usuario

    SqlParameter ParamID = new SqlParameter();

    ParamID.ParameterName = "pID";

    ParamID.SqlDbType = SqlDbType.Int;

    ParamID.Direction = ParameterDirection.Input;

    ParamID.Size = 5;

    ParamID.Value = 1010;

     

    // Nome do Usuario

    SqlParameter ParamName = new SqlParameter();

    ParamName.ParameterName = "pNomeUsuario";

    ParamName.SqlDbType = SqlDbType.NVarChar;

    ParamName.Direction = ParameterDirection.Input;

    ParamID.Size = 15;

    ParamName.Value = "DanielBraga";

     

    // Adiciona os parametros na coleção passando a chave

    Parametros.Add(0, ParamID);

    Parametros.Add(1, ParamName);

    ExeuteNonQuery("suaStoredProcedure", Parametros);

     

     

    Depois, a sua função ExecuteNonQuery:

    private void ExeuteNonQuery(string commandText, Dictionary<Int32, SqlParameter> ColecaoParametros)

    {

    SqlConnection cn = new SqlConnection("suaConnectionString");

    SqlCommand cmd = new SqlCommand(commandText, cn);

    for (int i = 0; i < ColecaoParametros.Count; i++)
    {

    cmd.Parameters.Add(ColecaoParametros[ i ]);

    }

     

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Connection = cn;

    }

     

    Obs: Não estou levando em consideração tratamento de erros, performance e funcionalidade, apenas um exemplo mostrando a forma de uso.

     

    Espero que ajude!

    sexta-feira, 3 de agosto de 2007 13:52
  • Ola,

    Você poderia utilizar uma DAL para fazer esse trabalho: http://www.projetando.net/Sections/ViewArticle.aspx?ArticleID=3

     

    terça-feira, 7 de agosto de 2007 11:13