USAR PROCEDURE FIREBIRD DINAMICO

SAMUCATNB 26/05/2011 15:32:53
#375076
amigos, tenho a necessidade de criar as passagens de parâmetros de maneira dinâmica para o banco, no exemplo abaixo estou incluindo um setor, queria fazer de um jeito que a mesma procedure service para todas as tabelas, como poderia fazer isso

public void ExecuteQuery(string strQuery)
{
try
{
Instance.Conectar();
FbCommand comandoInsert = conexao.CreateCommand();
comandoInsert.CommandType = System.Data.CommandType.StoredProcedure;
comandoInsert.CommandText = strQuery;
comandoInsert.Parameters.Add(new FbParameter([Ô]setcod[Ô], FbDbType.Integer));
comandoInsert.Parameters.Add(new FbParameter([Ô]setnom[Ô], FbDbType.VarChar));
comandoInsert.Parameters.Add(new FbParameter([Ô]setqfi[Ô], FbDbType.Char));
comandoInsert.Parameters.Add(new FbParameter([Ô]setqtv[Ô], FbDbType.Char));
comandoInsert.Parameters.Add(new FbParameter([Ô]setalt[Ô], FbDbType.Char));
comandoInsert.Parameters.Add(new FbParameter([Ô]wtip[Ô], FbDbType.Char));
comandoInsert.Parameters[[Ô]setcod[Ô]].Value = 5; //txtSetCod.Text;
comandoInsert.Parameters[[Ô]setnom[Ô]].Value = [Ô]SETOR 5[Ô];//txtSetNom.Text;
comandoInsert.Parameters[[Ô]setqfi[Ô]].Value = [Ô]S[Ô]; // chkSetFQt.Checked ? [Ô]S[Ô] : [Ô]N[Ô];
comandoInsert.Parameters[[Ô]setqtv[Ô]].Value = 1;
comandoInsert.Parameters[[Ô]setalt[Ô]].Value = [Ô]S[Ô];
comandoInsert.Parameters[[Ô]wtip[Ô]].Value = [Ô]I[Ô];

comandoInsert.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show([Ô]Erro: [Ô] + e);
}
}
TECLA 26/05/2011 20:04:47
#375087
Resposta escolhida
Citação:

...queria fazer de um jeito que a mesma procedure service para todas as tabelas...



Mesma PROCEDURE ou mesmo MéTODO?
SAMUCATNB 27/05/2011 00:32:23
#375100
desculpe não ter sido claro, mas o método ExecuteQuery foi feito com uma procedure específica onde grava um registro na tabela de Setor, gostaria de tornar esse método global a todas as tabelas, passando os campos que quero gravar e qual procedure quero executar do banco.
SAMUCATNB 27/05/2011 08:53:11
#375115
galera talvez não estou conseguindo ser claro, mas eu preciso gravar dados no banco de dados firebird(onde ja tenho as procedures montadas) , no c# vou fazer a chamada delas passar os parametros e gravar, como foi mostrado no exemplo no começo do tópico, a idéia é fazer isso de uma forma mais dinamica direcionando a construção dos parametros para um unico metodo.
no aguardo.
TECLA 28/05/2011 12:06:47
#375209
Entendi (ufa! hehehe).

Sugiro que você monte uma lista com alguns ENUMERADORES relacionando todas as procedures.
Este [Ô]enum[Ô] criado será usado como um dos parâmetros do método que montou.
Um outro parâmetro do método, deveria ser uma coleção que irá receber todos os nomes do [Ô]parâmetros de entrada da PROC[Ô].

No final, a assinatura deve ficar mais ou menos assim:

public void ExecuteQuery(List<string> paramProc, EnumNomeProc nomeProc)
...


Qualquer dúvida, poste aqui.
Tópico encerrado , respostas não são mais permitidas