Usuário com melhor resposta
usando params IDbDataParameter[] parameters

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..
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:
// 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){
{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!
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:
// 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){
{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!
-
Ola,
Você poderia utilizar uma DAL para fazer esse trabalho: http://www.projetando.net/Sections/ViewArticle.aspx?ArticleID=3