USAR PROCEDURE FIREBIRD DINAMICO
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);
}
}
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);
}
}
Citação:...queria fazer de um jeito que a mesma procedure service para todas as tabelas...
Mesma PROCEDURE ou mesmo MéTODO?
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.
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.
no aguardo.
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:
Qualquer dúvida, poste aqui.
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