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

Felipe Oriani fboriani em gmail.com
Sex Fev 13 11:08:28 -03 2009


Fala Marcelo, sim é possivel... basta usar a fnução "coalesce" do
Firebird... por exemplo, dentro de sua procedure faça da seguinte forma:

 SELECT *COALESCE*(CodUsuario,0)
 FROM TB_Usuario
 WHERE Usuario = :usuario AND Senha = :senha
 INTO :codusuario;

**Caso o resultado de CodUsuario seja nulo, ele retorna o 0 (que esta como
segundo parametro da função)

espero que resolva
[]'s




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

>
> Bom dia,
> Felipe.
>
> Blz e vc?
>
> Então, eu consegui executar a procedure, faltou colocar apenas o "EXECUTE
> PROCEDURE", ficando:
> FbCommand fcmUsuario = new FbCommand("EXECUTE PROCEDURE
> STP_AUTENTICAUSUARIO(?,?)", fcnUsuario);
>
> E ontem mesmo fiz dessas duas formas que você me falou. E deu certo as duas
> maneiras, o único problema é quando não recebo nenhum valor pelo
> executeScalar(), ou seja, null, acaba gerando erro, então acabei optando
> pela 1ª forma.
> Mas não teria um maneira de fazer com que minha procedure me retorne algum
> valor, como "0", caso não consiga me retornar nenhum registro?
> Minha procedure está da seguinte maneira:
> begin
>  SELECT CodUsuario
>  FROM TB_Usuario
>  WHERE Usuario = :usuario AND Senha = :senha
>  INTO :codusuario;
>  suspend;
> end
>
> E para que não gere erro em C# ao consultar, verifico o meu parâmetro de
> saída se recebeu algum valor:
>   int resultado=0;
>   fcmUsuario.ExecuteNonQuery();
>   if (Convert.IsDBNull(fcmUsuario.Parameters[2].Value) == false)
>   {
>      resultado = (int) fcmUsuario.Parameters[2].Value;
>    }
>
>   if (resultado <= 0)
>   {
>      throw new Exception("Usuário ou senha inválido! Tente novamente!");
>   }
>
>
> > Date: Fri, 13 Feb 2009 09:16:16 -0200
> > From: fboriani em gmail.com
> > To: lista em firebase.com.br
> > Subject: Re: [firebase-br] Conexão com firebird e C#?
> >
> > 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
>
> _________________________________________________________________
> 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