[firebase-br] Conexão com firebird e C#?

Felipe Oriani fboriani em gmail.com
Sex Fev 13 09:16:16 -03 2009


Fala Marcelo... blza


Então cara, se vc está com um parametro de OutPut em sua Store Procedure,
existem duas formas para vc conseguir recuperar este valor, o primeiro dele
(no qual eu acho a forma mais correta) é vc configurar a saida do parametro,
executar e recuperar... veja abaixo:

----------------------------------------------------

//depois de configurar os parametros de input, você deve configurar o
parametro de saida (output) que sua Store Procedure irá retornar...
fcmUsuario.Parameters.Add("@CodUsuario", FbDbType.Integer).Direction =
ParameterDirection.Output;

//tendo em mente que vc ja está com a conexão aberta e com todos os
parametros setados, vc deve executar o comando
fcmUsuario.ExecuteNonQuery();

//recuperar o valor do parametro de saida (output)
int saida =
int.Parse(fcmUsuario.Parameters["@CodUsuario"].Value.ToString());

----------------------------------------------------

A outra forma (fazendo um ExecuteScalar() no seu comando) é você fazer uma
"Select..." em sua Store Procedure, por exemplo:

----------------------------------------------------

//configurar o comando da seguinte forma:
FbCommand fcmUsuario = new FbCommand("SELECT STP_AUTENTICAUSUARIO.CodUsuario
FROM STP_AUTENTICAUSUARIO(?,?)", fcnUsuario);

//executar com o ExecuteScalar()
int saida = int.Parse(fcmUsuario.ExecuteScalar().ToString());

----------------------------------------------------

Assim você consegue recuperar o resultado a Store Procedure...

Lembrando que o método ExecuteScalar() de um objeto "Command", sempre irá
retornar um "object" sendo ele  o resultado da primeira coluna, da primeira
linha... blza


obs: teste a select da segunda opção, pois estou sem o FB aqui para lhe dar
certeza... mas este é o caminho

Espero que ajude
[]'s






2009/2/12 Marcelo Guilherme Tamanini <marcelo_tamanini em hotmail.com>

>
>
>
>
>
> Obrigado Felipe!
>
> Então, fiz as alterações. Só que agora fica gerando o seguinte erro:
> sql error code -104
> token unknown - line 1, char 44 (
>
> Segue as alterações:
> FbConnection fcnUsuario = new FbConnection(Dados.StringDeConexao);
> FbCommand fcmUsuario = new FbCommand("STP_AUTENTICAUSUARIO(?,?)",
> fcnUsuario);
> fcmUsuario.CommandType = CommandType.StoredProcedure;
>
> try
> {
>   fcmUsuario.Parameters.Add("@usuario", nome);
>  fcmUsuario.Parameters.Add("@senha", senha);
>   fcnUsuario.Open();
>
>  int resultado = Convert.ToInt32(fcmUsuario.ExecuteScalar());
>
>
> Procedure:
> begin
>  SELECT CodUsuario
>  FROM TB_Usuario
>   WHERE Usuario = :usuario AND Senha = :senha
>  INTO :codusuario;
>  suspend;
> end
>
> Pelo jeito ele agora reconheceu a procedure, mas deve algum rolo com
> parenteses da procedure pelo que eu entendi!
> Mas
> já fiz os testes pelo ibexpert, executei a procedure, indicando os dois
> valores e funcionou normal, pois trouxe o resultado corretamente.
>
> Qual seria o problema agora?
>
> Explore the seven wonders of the world Learn more!
> _________________________________________________________________
> Discover the new Windows Vista
> http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
______________________________________
Felipe B. Oriani
email: fboriani em gmail.com
www.felipeoriani.com.br



Mais detalhes sobre a lista de discussão lista